数轮初步---无平方因子的数

来源:互联网 发布:js bind方法实现 编辑:程序博客网 时间:2024/06/06 09:06

这是从刘汝佳的算法竞赛入门经典中看到的题,书中是这么描述的

给出正整数n和m,输出在[m, n]中的无平方因子数。PS(无平方因子数的概念请自行百度)

#include<stdio.h>#include<string.h>#include<math.h>bool visited[10000005];int prime[500000];int main(){int n, m;scanf("%d", &n, &m);int i, j, c = 0;int r = sqrt(n + 0.5);memset(visited, 0, sizeof(visited));for (i = 2; i <= r; i++){if (!visited[i]){prime[c++] = i;for (j = i * i; j <= n; j += i)visited[j] = 1;}}memset(visited, 0, sizeof(visited));for (i = 0; i < c; i++){for (j = prime[i] * prime[i]; j <= n; j += prime[i] * prime[i])visited[j] = 1;}for (i = m; i <= n; i++){if (!visited[i])printf("%d ", i);}return 0;}

书中给出的思想是先筛选一遍素数, 然后再用素数筛选一遍无平方因子数。


0 0
原创粉丝点击