当前位置: 代码迷 >> 综合 >> 【C语言版】1013?数素数?(20分)
  详细解决方案

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

热度:57   发布时间:2023-12-25 11:25:09.0

 

令 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%10 != 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;
}