快速查找素数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。
-
输入
-
给出一个正整数数N(N<=2000000)
但N为0时结束程序。
测试数据不超过100组
输出
-
将2~N范围内所有的素数输出。两个数之间用空格隔开
样例输入
-
5 10 11 0
样例输出
-
2 3 5 2 3 5 7
2 3 5 7 11
-
个人理解:1.难得遇到一题感觉自己可以独立完成的题目,之前有对关于埃式筛法的练习,所以,写起来不会感觉太难,但是,就一直是timelimit,我也和绝望,然后换室友的代码,最后一个宿舍的都差不多了,结果,有的过,有的不过。还是不行,百度的代码也是,我都快怀疑人生了,但之后再试一次,代码竟然通过了。还是原来的代码呀!写完优快云我又交了一遍,又不行了!!!,然后我就,交了唯一的那份通过的时间内存。
-
结果 时间 内存 语言 Acceptted 924 8052 c
代码: -
#include<stdio.h>
#include<string.h>
#define MAX 2000001
int all[MAX];
int N,i,j,s;
int main()
{
memset(all,1,sizeof(all));
for(i=2;i<=MAX;i++)
if(all[i])
for(j=i+i;j<=MAX;j+=i)
all[j]=0;
while(scanf("%d",&N),N)
{
for(i=2;i<=N;i++)
if(all[i])
printf("%d ",i);
printf("\n");
}
return 0;
}
-
给出一个正整数数N(N<=2000000)