【C語言版】1013 數素數 (20分)

 

令 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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章