ACM题目1084: 用筛法求之N内的素数
题目描述:
用筛法求之N内的素数。
输入:
N
输出:
0~N的素数
样例输入:
100
样例输出:
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
思路:
题目不是很难,刚开始做的时候写的是遍历数字然后判断当前数字能否整除2,3,5,7
但是这种方法很占用时间,时间复杂度太高了
于是换用另外一种方法,同时有两个指针去遍历小于N的所有元素
结果证明,可行。
代码:
#include <stdio.h>
int main()
{
int i,j,n;//i,j为遍历的向量,n为输入的元素
scanf("%d",&n);//取到n的值
for(i=2;i<n;i++)
{
for(j=2;j<i;j++)
{
if(j%i==0)
{
break;
}
}
if(j==i)
printf("%d",i);
}
return 0;
}
反思:
注意最后不能i=n,因为要求的小于n的所有素数,如果加上等于号,就会多算一个数字