- 论坛徽章:
- 1
|
10可用积分
在turbo c++3.0的环境下,编译有25处错误,不能生成exe文件。请帮忙修改,谢谢!!
计算并输出1000以内最大的10个素数,以及它们的和。
要求:
(1) 在程序内部加必要的注释。
(2) 由于偶数不是素数,可以不考虑对偶数的处理
(3) 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。
(4) 输出形式为:素数1+素数2+素数3+素数4+素数5+素数6+素数7+素数8+素数9+素数10 = 总和值。
流程图如下:
file:///C:/Documents%20and%20Settings/Owner/桌面/QQ截图未命名.jpg
源代码如下:
#include<stdio.h>
#include<math.h>
int sushu(int n) /* 判断素数的函数 */
{
int t,i;
t=sqrt(n);
for(i=2;i<=t;i++)
if(n%i==0) /* 如果不是素数,返回 0 */
return 0;
return n; /* 如果是素数,返回该数 */
}
void main()
{
int i,j=0,n,m=0,a[1000],x;
/*clrscr();*/
printf("Please input a number form 1 to 1000:");
scanf("%d",&x);
if(x==2) /* x=2时的处理 */
printf("%d\n",x);
else if(x<=1) /* x在1~1000范围外时的处理 */
printf("Error!\n");
else
{
if(x%2==0) /* x为偶数时,把x变为奇数 */
x--;
for(i=x;i>1;i-=2) /* x为奇数时,做函数计算 */
{
n=sushu(i); /* 做判断素数的函数调用 */
if(n!=0) /* 对素数的处理 */
{
a[j]=n; /* 把素数由大至小存入数组a[ ]中 */
j++;
if(j<11)
m+=n; /* 统计前10个素数之和 */
}
}
if(j<10) /* 当素数个数小于10个时,结果输出 */
{
for(i=0;i<j;i++)
{
n=a;
printf("%d",n);
printf("+");
}
printf("2=");
printf("%d\n",m+2);
}
else for(i=0;i<10;i++) /* 当素数个数大于等于10个时,结果输出 */
{
n=a;
printf("%d",n);
if(i<9)
printf("+");
else
{
printf("=");
printf("%d\n",m);
}
}
}
}
请帮忙指正,谢谢! |
最佳答案
查看完整内容
有注释的行才有这个错误,lz先把注释去了,就没事了可能是lz写注释的时候点了全角的切换,或者不小心按了 shift+space[ 本帖最后由 5毛党党员 于 2008-8-19 17:44 编辑 ]
|