输入一个自然数n,求小于等于n的素数之和?

  • 2022-07-16 09:58:31

问题描述:
        输入一个自然数n,求小于等于n的素数之和;例如:样例输入 :2 样例输出:2。
解题思路:
(1)什么是素数:
        素数(prime number)又称质数,有无限个。一个大于1的自然数,除了1和它本身外(因为1既不是素数,也不是合数),不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数.
比如:2,3,5,7,11,…等。
(2)如何判断一个数是否为素数:
        该数除了1和它本身以外不再有其他的因数,通俗的讲,就是只能被1和这个数本身整除,不能被其它数整除;

for (j = 2; j<i; j++)//j不能从1开始,因为1能整除任何数,所以j从2开始
{
   if (i%j == 0) 
        break;
}
if (i == j)
    printf("%d ", i);//i就是一个素数

(3)定义一个变量sum,统计所有素数的和,当所有素数统计完成之后,打印sum;

代码实现:

#include<stdio.h>
int main()
{
    int n = 0;
    int sum = 0;
    int i = 0, j = 0;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        for (j = 2; j < n; j++)
        {
            if (i%j == 0)
                break;
        }
        if (i == j)
        {
            sum = sum + i;
        }
    }
    printf("%d\n", sum);
    return 0;
}

运行结果:
输入一个自然数n,求小于等于n的素数之和?
输入一个自然数n,求小于等于n的素数之和?

猜你喜欢