程序代码:
// 求[3-1000]之间最大的五个素数之和。
#include<stdio.h>
void main()
{
int i = 0;
int j = 0;
int a = 0;
int b = 0;
int s = 0;
int flag = 0;
int temp[5];
temp[0] = 3; // 3 的判定不符合下列判定式 先赋给temp数组第一个
i = 1; // temp数组下标指向第二个元素
for (a = 4; a <= 1000; a++) // for 大循环 判定 4-1000是否素数并处理
{
for (b = 2, flag = 0; (b <= a/2) && (flag == 0); b++) // 该循环判定是否是素数
{
if (a % b == 0)
{
flag = 1;
}
} // 判定素数结束
if (!flag) // 素数的处理方式
{
if (i == 5) // 该选择结构处理temp数组 只存储最后的五个素数 如果有新的素数就依次替代
{
for (j = 0; j < 4; j++)
{
temp[j] = temp[j+1];
}
temp[4] = a;
i = 4;
}
else
{
temp[i] = a;
}
i = i + 1;
} // 素数处理方式结束
} // a 的大循环结束
for (j = 0, s = 0; j < 5; j++)
{
printf("\n%d\n", temp[j]); // 输出五个素数
s = s + temp[j];
}
printf("[3-1000]之间最大的五个素数之和是:%d.\n", s);
}
你的错误应该是 数据溢出。。。。 呃这么说不准确。。。嗯
这么说吧 3 - 1000里面的素数不只有100个 嗯