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