从键盘为一维整型数组输入10个数,求其中的素数之和。
我编写的程序为:
#include"stdio.h"
void main(void)
{
int a[10],i,n,flag=1,sum=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
for(n=2;n<a[i];n++)
{
if(a[i]%n==0)
{
flag=0;break;
}
}
}
for(i=0;i<10;i++)
{
if(flag==1) sum=sum+a[i];
}
printf("sum=%d\n",sum);
getch();
}
运行没有报错,但是无论输入什么数字都是sum=0,求高手指点哪里错了,谢谢!
#include"stdio.h"
bool isPrime(int a);
void main(void)
{
int a[10],i,sum=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
if(isPrime(a[i])) {
sum += a[i];
}
}
printf("\n\nsum=%d\n",sum);
getchar();
}
bool isPrime(int a) {
int i;
for (i = 2; i < a; ++i)
if(a % i == 0)return false;
printf ("%d is prime\n",a);
return true;
}
å¦æä¸ç¨èªå®ä¹å½æ°ï¼ç´æ¥ç¨æè¿ç§ç¼æ³ä¸è¡åï¼éè¦æä¹ä¿®æ¹å¢
追ç#include"stdio.h"
void main(void)
{
int a[10],i, j, sum=0;
bool flg;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sum = 0;
for(i=0;i<10;i++) {
flg = true; //é»è®¤trueãç´ æ°
for (j = 2; j < a[i]; ++j) {
if(a[i] % j == 0) {
flg = false;
break;
}
}
if(!flg)continue;
printf ("%d is prime\n",a[i]);
sum += a[i];
}
printf("\n\nsum=%d\n",sum);
getchar();
}
怎么修改?难道必须用自定义函数吗?
追答很简单,只需要把你的sum计算求和放到for循环里面就行,像这样(flag初始化为0):
for(i=0;i<10;i++)
{
for(n=2;n<a[i];n++)
{
if(a[i]%n==0)
{
flag=0;break;
}
else
flag = 1;
}
if(flag==1) sum=sum+a[i];
}
printf("sum=%d\n",sum);