【C语言版】1013 数素数 (20分)

    技术2022-07-12  68

     

    令 P​i​​ 表示第 i 个素数。现任给两个正整数 M≤N≤10^​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数。

    输入格式:

    输入在一行中给出 M 和 N,其间以空格分隔。

    输出格式:

    输出从 P​M​​ 到 P​N​​ 的所有素数,每 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

    【注】

    ①要理解清楚N和M代表的什么意思。M:第M个素数,N:第N个素数 

    ②就是素数的判断

    【参考代码】

    #include<stdio.h> #include<math.h> //判断素数 int isprime(int x); int main() { int N,M,i,j=1,prime[10000]; prime[0]=2;//2是最小的素数 scanf("%d %d", &M, &N); //M:第M个素数,N:第N个素数 for(i=3;j<10000;i++) //判断条件是j<10000,是有10000个素数 { if(isprime(i)) prime[j++] = i;//从 prime[1]开始保存素数 } j=1; //在这里用于输出格式判断 for(i=M;i<=N;i++) { if(j != 0 && i!=N)//我素数不是最后一个也不是一行最后一个 printf("%d ", prime[i-1]); else if(j==N)//最后一个素数 不需要空格了 printf("%d", prime[i-1]); else printf("%d\n", prime[i-1]); //需要换行 j++; } } int isprime(int x)//判断素数的函数 { int i; for(i=2;i<=sqrt(x);i++) { if(x%i == 0) { return 0;break; } } return 1; }

     

    Processed: 0.022, SQL: 9