PTA 翁愷 7-33 統計素數並求和


本題要求統計給定整數M和N區間內素數的個數並對它們求和。

輸入格式:

輸入在一行中給出兩個正整數M和N(1MN500)。

輸出格式:

在一行中順序輸出M和N區間內素數的個數以及它們的和,數字間以空格分隔。

輸入樣例:

10 31
 
結尾無空行

輸出樣例:

7 143
 
結尾無空行
整體思路
本題關鍵就在於判斷質數,判斷質數網上經典的代碼很多,我的想法是從2~t-1,用t分別模這些數,如果出現模為0則判斷非質數。這樣子代碼效率並不高,運行速度也很慢,但是目前還沒有學習過算法和數據結構,只能等以后再來改進了。
#include <stdio.h>

int main (void){
    int m = 0,n = 0;
    scanf ("%d %d",&m,&n);
    int i = 0,j = 0;
    int p[300] = {0};
    int num = 0,ince = 0,sum = 0;
    for (i = m;i <= n;++i)
    {
        if (i >= 3)
        {   
            num = 0;
            for (j = 2;j <= i-1;++j)
            {
                if (i % j == 0)
                    num++;
            }
            if (num == 0)
            {
                p[ince] = i;
                ince++;
            }
        }
        if(i == 2)
        {
            p[ince] = 2;
            ince++;
        }
    }
    for (i = 0;i < ince;++i)
    {
        sum += p[i];
    }
    printf("%d %d",ince,sum);
    return 0;
}

討論:

  • m=2時算是特殊情況,因為上面的循環是從2開始的,單獨拿出來判斷便可。
  • num是判斷質數的標的,ince用於保存質數的個數,sum用於保存和


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM