C编程:给定范围的素数之和打印素数和总和

时间:2018-03-07 14:46:02

标签: c

我正在创建代码,用于打印给定整数的一组素数之和。这是我到目前为止创建的内容:

#include <stdio.h>
#include <stdlib.h>
int is_prime(int m)
{
    int i;
    for(i=2; i<=m/2; i++)
    {
        if (m % i==0)
        {
            return 0;
        }

    }
    return 1;
}
int main()
{
    int num, min, max, sum = 0;
    scanf("%d", &min);
    scanf("%d", &max);
    for(num = min; num <= max; num++)
    {
        if(is_prime(num))
        {
            sum += num;
            printf("%d", num);
        }

    }
    printf("=%d\n", sum);
    return 0;
 }

如果我输入10作为最小值,20作为最大值,它将打印出11,13,17,19,它将打印出60的总和。我只是想知道如何打印&#39; + &#39;在执行时列出的数字之间。

1 个答案:

答案 0 :(得分:2)

解决方案是在第一个数字前面不打印加号,并在所有其他数字前面打印加号。为了实现这一点,我使用了一个带有false / true值的布尔值。

#include <stdio.h>
#include <stdlib.h>
int is_prime(int m)
{
    int i;
    for(i=2; i<=m/2; i++)
    {
        if (m % i==0)
        {
            return 0;
        }

    }
    return 1;
}
int main()
{
    int num, min, max, sum = 0;
    scanf("%d", &min);
    scanf("%d", &max);
    bool first = true;
    for(num = min; num <= max; num++)
    {
        if(is_prime(num))
        {
            sum += num;
            if(!first) 
            {
                printf("+");
            }
            printf("%d", num);
            first = false;
        }

    }
    printf("=%d\n", sum);
    return 0;
 }

此代码也适用于使用整数而不是布尔值:int first = 1;first = 0;