快速查找素数
时间限制:
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
-
题目本身不难 但是要注重效率!!! 不然的话 会出现时间过长导致无法AC!!!!
-
# include <stdio.h> int isprime[2000009]; void decide() { int i, j, k; for (k=2; k <2000009; k++) isprime[k] = 1; for (i = 2; i <2000009; i++) { if (isprime[i]) { for (j = i + i; j < 2000009; j+=i) { isprime[j] = 0; } } } } int main() { int n, t; decide(); do { scanf("%d",&n); for (t = 2; t <= n; t++) { if(isprime[t] == 1) printf("%d ",t); } puts(""); }while(n != 0); return 0; }
虽然AC了 但是我占用时间912 内存8044 还好通过了.............. 其他我一般都是 时间为0~4 内存为232
-
给出一个正整数数N(N<=2000000)