PTA 翁恺 7-33 统计素数并求和

本题要求统计给定整数M和N区间内素数的个数并对它们求和。

输入格式:

输入在一行中给出两个正整数M和N(1≤M≤N≤500)。

输出格式:

在一行中顺序输出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用于保存和
上一篇:每日总结33


下一篇:33-vuecli公共组件的提取