令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 8997 101 103
#include <stdio.h> 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); for(i = 3; i <= limit; i += 2) { if(n % i == 0) { flag = 0; break; } } } return flag; } int main() { int a, b; scanf("%d %d",&a, &b); int t=0,k=0; int j; for(j=2;;j++){ if (isPrime(j)) { t++; // printf("%d--%d\n", j, t); if((t>=a) && (t<b)){ k++; if(k%10){ printf("%d ", j); }else{ printf("%d\n", j); } }else if(t ==b){ printf("%d\n", j); break; }else if(t>b){ break; } } } }
需要优化求素数算法。。。