标签:算法竞赛入门经典 无平方因子数 快速求素数 algorithm
这是从刘汝佳的算法竞赛入门经典中看到的题,书中是这么描述的
给出正整数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; }
标签:算法竞赛入门经典 无平方因子数 快速求素数 algorithm
原文地址:http://blog.csdn.net/u013174702/article/details/45484395