#include<stdio.h>
#include<math.h>
int main(){
int M,N,i=1,j=0,p[10001],c=0;
scanf("%d %d",&M,&N);
if(M <= N <= 10000){
do{
i++;
if(isPrime(i)){
p[j]=i;
j++;
//printf("%d\n",p[j]);
}
}while(j<N);
for(i=M-1;i<N;i++){
c++;
if(c%10==0){
printf("%d\n",p[i]);
}else if(i==N-1){
printf("%d",p[i]);
}else{
printf("%d ",p[i]);
}
}
}
}
int isPrime(int a){
int i=0;
int isprime=1;
for(i=2;i<=sqrt(a);i++){
if(a%i==0){
isprime=0;
break;
}
}
return isprime;
}
#include<stdio.h>
#include<math.h>
int main(){
int M,N,i,j=0,p[10001],c=0;
scanf("%d %d",&M,&N);
if(M <= N <= 10000){
for(i=2;i<20000;i++){
if(isPrime(i)){
p[j]=i;
j++;
//printf("%d\n",p[j]);
}
}
for(i=M-1;i<N;i++){
c++;
if(c%10==0){
printf("%d\n",p[i]);
}else if(i==N-1){
printf("%d",p[i]);
}else{
printf("%d ",p[i]);
}
}
}
}
int isPrime(int a){
int i=0;
int isprime=1;
for(i=2;i<=sqrt(a);i++){
if(a%i==0){
isprime=0;
break;
}
}
return isprime;
}
总结:
1、把判断是否为素数写成一个函数,使代码变得更简洁。
2、第一个答案测试用例全部通过,第二个有一个没通过,主要原因是第二个答案并不知道第10000个素数的大小,所以盲目的决定了循环的次数,是不严谨的,而第一个答案没有使用for循环而是使用了do while循环,即加上了一句判断的条件,能够使得循环次数具体化。