令P
i表示第i个素数。现任给两个正整数M <= N <= 10
4,请输出P
M到P
N的所有素数。
输入格式:
输入在一行中给出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
程序:
#include #include /* 求素数函数 */ int isPrime(int n) { int i, limit, flag = 1; if(n <= 1) flag = 0; else if(n == 2) flag = 1; else if(n % 2 == 0) flag = 0; else { limit = sqrt(n) + 1; for(i = 3; i <= limit; i += 2) { if(n % i == 0) { flag = 0; break; } } } return flag; } int main(void) { int a[10001]; int i, count = 1; int start, end; scanf("%d%d", &start, &end); /* 算出第1个到第end个素数,存放在数组a中 */ for(i = 2; count <= end; ++i) { if (isPrime(i)) { a[count] = i; ++count; } } /* 输出第start个至第end个素数 */ count = 1; for(i = start; i <= end; ++i) { printf("%d", a[i]); if(count % 10 != 0 && i < end) printf(" "); if(count % 10 == 0) printf("\n"); ++count; } return 0; }