指定范围的素数求和,是第n个素数到第m个

指定范围的素数求和
本题要求编写程序,现在,给定两个整数n和m,保证 0<n<=m<=200,计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。我们认为2是第1个素数,然后是3,5,7分别是第2,3,4个
输入格式:
两个整数,第一个表示n,第二个表示m。
z
输出格式:
一个整数,表示第n个素数到第m个之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
3+5+7=15

我的想法是定义一个数组用来存放素数,然后需要第几个就方便一点,还请各位指正一下,如果又更简单的方法还请教我一下。

#include<stdio.h>
int main () 
{
    int m,n,a[200];
    int i,j,k;
    scanf("%d%d",&n,&m);
    for(i=2;i<=200;i++)
    {
        if(i==2)
        {
            *a=2;
        }
        for(j=2;j<i;j++)
        {
            if(i%j==0)
            {
                break;
            }
            else
            {
                if(j==i-1)
                {
                    for(k=1;k<200;k++)
                    {
                        *(a+k)=i;
                    }
                }
            }
        }
    }
    int sum=0;
    for(k=n-1;k<=m-1;k++)
    {
        sum+=a[k];
        if(k!=m-1)
        {
            printf("%d+",a[k]);
        }
        else
        {
            printf("%d",a[k]);
        }
    }
    printf("=%d",sum);
    return 0;
}

  你的想法是好的,但是如果确定了n,m的范围的,完全可以建立一张固定的素数表,然后直接映射,但是你这个代码写的有点复杂,我教你一个简单一点的写法:

/** PrimberNumberOfSum.c -- 求指定范围内的质数之和 */
#include <stdio.h>

/*
    指定范围的素数求和
    本题要求编写程序,现在,给定两个整数n和m,保证 0<n<=m<=200,计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。我们认为2是第1个素数,然后是3,5,7分别是第2,3,4个
    输入格式:
    两个整数,第一个表示n,第二个表示m。
    z
    输出格式:
    一个整数,表示第n个素数到第m个之间所有的素数的和,包括第n个素数和第m个素数。
    输入样例:
    2 4
    输出样例:
    3+5+7=15
*/

int main(void)
{
    // 1.定义质数表,因为确定了nm的范围,所以这里写死
    int prime[] = {
                    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, 101, 103, 107, 
                    109, 113,127, 131, 137, 139, 149, 151,
                    157, 163, 167, 173,179, 181, 191, 193,
                    197, 199,
                };
    // 定义变量nm
    int m,n;
    // 提示性输出
    printf("请输入nm的值:");

    // 2.读取mn的值
    scanf("%d%d", &n, &m);
    int sum = 0, i, len = sizeof(prime)/sizeof(prime[0]);

    // 3.处理指定区间范围内的素数之和
    for (i = 0; i < len; i++)
    {
        int num = prime[i];
        if(num >= n && num <= m) {
            sum += num;
        }
    }
    printf("指定范围内的素数之和为%d\n", sum);
    
    return 0;
}