输入10个数将它们存入数组a,统计其中所有素数的和。有错误,请教高手帮忙修改。

#include<stdio.h>
#include<math.h>
void main()
{int i,j,k,a[10],*p=a,sum;
sum=0;
printf("input 10 positive integers:\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{k=sqrt(a[i]);
for(j=2;j<=k;j++)
if (a[i]/j==0)break;
else printf("%d ",a+i);
sum+=a+i;
}
printf(" %d ",sum) ;
getch();
}

第1个回答  2010-05-23
/*这是我改的程序 看能不能帮上你的忙*/
#include<stdio.h>
#include<math.h>
void main()
{int i,j,k,a[10],*p=a,sum,flag=1;/*设了一个flag标志*/
sum=0;
printf("input 10 positive integers:\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{k=sqrt(a[i]);
for(j=2;j<=k;j++) /*我改动的部分在这*/
{if (a[i]%j==0) /*/ 改为% */
{
flag=0;
break;
}
}
if(flag==1)
{printf("%d ",*(a+i));
/*通过标志判断是否加这个数和输出这个数 a+i前加*运算符*/
sum+=*(a+i);
}
flag=1;
}

printf(" %d ",sum) ;
getch();
}
/*a+i 是数组中第i+1个元素的地址 要加*才能取它对应的元素的值 / 应该为% 要判断不是素数 应该看它除以一个数的余数是否为零 我设了一个标志用来判断
素数 通过这个标志来决定是否用sum加这个数和输出这个素数 */本回答被提问者采纳
相似回答
大家正在搜