题目描述:
用质数筛选法,求2到N的所有质数。
筛法求素数,指的是每次将一个素数的所有的倍数去掉,如果当前的数没有被比它小的数去掉过,那么当前的数就是素数。
比如1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1不是素数。不用管。
2是素数,那么2的所有的倍数要被去掉。
3是素数,那么3的所有的倍数要被去掉。
4 被去掉了。不用管。
这样做下去我们就可以筛选出所有的指定范围内的素数了。
输入格式:
一个正整数N。
输出格式:
输出一行,包括2到N的所有质数。质数之间以空格隔开。
样例输入:
20
样例输出:
2 3 5 7 11 13 17 19
提示:
这道题根本不需要管它说的话,就是求2到N之间的质数。
答案:
#include<stdio.h>
#include<math.h>
int
main()
{
int
i,j,k,m,n=0;
scanf
(
"%d"
,&m);
for
(i=2;i<=m;i++)
{
k=(
int
)
sqrt
(i);
for
(j=2;j<=k;j++)
if
(i%j==0)
break
;
if
(j>k)
{
printf
(
"%d "
,i);
n++;
}
}
return
0;
}