如何用C语言求1至100所有素数的和?

第1步:判断一个数为素数,这里用n=5举例。

#include<stdio.h>

int main()
{
    int b;
    int n = 5;
    for(b=2; b<n; b++)
        if(n%b == 0)    //合数
        {
            break;
        }
        if(b == n)
        {
            printf("%d", n);
        }

    return 0;
}

第2步:嵌套一个for循环,实现自动按顺序判断n到m之间的素数。

#include<stdio.h>

int main()
{
    int b;
    int n,m,i=0;
    scanf("%d %d", &n, &m);
    for(i=n;i<=m;i++)
    {
        for(b=2; b<=i; b++)
        {
            if(i == 2 )
            {
                printf("%d ", i);   //如果有2,输出2
            }
            if(i%b == 0)    //合数则跳出循环
            {
                break;
            }
            if(i == b+1)    //与第一步不同的地方!
            {
                printf("%d ", i);
            }
        }
    }
    return 0;
}

第3步:给这些素数求和即可。

#include<stdio.h>

int main()
{
    int b,n,m,i=0;
    int sum = 0;
    scanf("%d %d", &n, &m);
    for(i=n;i<=m;i++)
    {
        for(b=2; b<=i; b++)
        {
            if(i == 2 )     //单独判断有2的情况
            {
                printf("%d ", i);
                sum += i;
            }
            if(i%b == 0)    //合数,跳出循环
            {
                break;
            }
            if(i == b+1)    //n不能被2到n-1整数,则为素数
            {
                printf("%d ", i);
                sum += i;
            }
        }
    }
    printf("\n");
    printf("%d", sum);

    return 0;
}

输入样例:

1 100

输出样例:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
1060

所以1至100之间所有素数之和为1060。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容