码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-04 20:16:39      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:算法竞赛入门经典   无平方因子数   快速求素数   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!