PAT乙級|C語言|1013 數素數 (20分)

題目

PiP_i表示第 i 個素數。現任給兩個正整數MN104M{\leqslant}N\leqslant10^4,請輸出PMP_MPNP_N的所有素數。

輸入格式:
輸入在一行中給出 M 和 N,其間以空格分隔。

輸出格式:
輸出從PMP_MPNP_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

AC代碼

#include<stdio.h>
#include<math.h>
int isprime(int N){//簡略版判斷素數,不具備健壯性
    if(N!=2&&N%2==0)return 0;
    int lim=sqrt(N);
    for(int i=3;i<=lim;i+=2){
        if(N%i==0)return 0;
    }
    return 1;
}
int main(){
    int M,N,count=0,print=0;
    scanf("%d %d",&M,&N);
    for(int i=2;count<=N;i++){//從2開始判斷,直到第N個素數結束
        if(isprime(i)){
            count++;//素數計數
            if(count==M){
                printf("%d",i);
                print++;//輸出次數計數,用以格式控制
            }
            if(M<count&&count<=N){
                if(print%10==0){
                    printf("\n%d",i);
                }
                else{
                    printf(" %d",i);
                }
                print++;
            }
        }        
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章