PAT考试乙级1013(C语言实现)

#include  
#include  
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(jfor(i=M-1;iif(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  
#include  
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;iif(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循环,即加上了一句判断的条件,能够使得循环次数具体化。

你可能感兴趣的:(PAT)