1013. 数素数 (20)
题目链接:https://www.patest.cn/contests/pat-b-practise/1013
思路:(1)找到第M个素数:从第一个素数2开始,逐个判断自然数是否为素数,是,素数个数加一,找到i=M ;
(2)从第M个素数,重复(1),找素数,并输出,直到找到第N个素数,
注意点:
(1)每满10个要换行,
(2)格式,最后一个没有空格。
1 #include<stdio.h> 2 #include<math.h> 3 int ispre(int n) 4 { 5 int i,nn; 6 nn=sqrt(n); 7 for(i=2;i<=nn;i++) 8 { 9 if(n%i==0) 10 return 0; 11 } 12 if(i>nn) 13 return 1; 14 } 15 int main() 16 { 17 int M,N,i,j,a,num; 18 scanf("%d %d",&M,&N); 19 i=0,a=2; 20 while(i!=M) 21 { 22 if(ispre(a))i++; 23 a++; 24 } 25 printf("%d",a-1); //输出第M个素数 26 if(N==M)return 0; //N=M结束 27 else 28 { 29 printf(" "); 30 num=1; 31 while(i!=N) 32 { 33 if(ispre(a)) 34 { 35 i++; 36 num++; 37 printf("%d",a); 38 if(num%10){ 39 if(i<N) 40 printf(" "); //注意最后一个没有空格。 41 } 42 else printf("\n"); 43 } 44 a++; 45 } 46 } 47 //printf("c"); 48 return 0; 49 }