1013. 数素数 (20)
时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。
输入格式:
输入在一行中给出M和N,其间以空格分隔。
输出格式:
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
输入样例:5 27输出样例:
11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103
方法1/* input: 5 27 output: 2,3,5,7,(11,13,17,19...) */ #include<cstdio> const int MAXN = 10010; int prime[MAXN] = {0}, pNum = 0; bool p[MAXN] = {false}; void findPrime(){ for(int i = 2; i <= MAXN; i++){ if(p[i] == false){ prime[pNum++] = i; for(int j = i + i; j <= MAXN; j += i){ p[j] = true; } } } } int main(){ findPrime(); int m, n, count = 0; scanf("%d %d", &m, &n); for(int i = m - 1; i < n; i++){ printf("%d ", prime[i]); count++; if(count % 10 == 0) printf("\n"); } return 0; }
方法2
#include<cstdio> #include<cmath> int isPrime(int n){ for(int i = 2; i <= (int)sqrt((double)n); i++){ if(n % i == 0) return 0; } return 1; } int main(){ int i = 2, j = 0, count = 0; int m,n; scanf("%d %d", &m, &n); while(1){ if(isPrime(i)){ j++; if(j >= m && j < n){ count++; if(!(count % 10)) //计数10个 printf("%d\n", i); else printf("%d ", i); } if(j == n){ printf("%d\n", i); break; } } i++; } return 0; }