你好,我为你解答:
我学过C++,已经拿到了国家级三级证。
这个可以这么写
#include
#include
int prime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
break;
if(i>sqrt(n))
return 1;
else
return 0;
}
main()
{
int n,count=0,sum=0;
for(n=500;count!=10;n--)
if(prime(n))
{
printf("%d ",n);
sum+=n;
count++;
}
printf("\nThe sum is %d.\n",sum);
}
懂了吗?不懂请追问。
满意请采纳,谢谢。
#include
void main()
{
int m,n=0,i,x=0;
for (i=500;i>1;i--)
{
for (m=(i-1);m>0;m--)
{
if(m==1)
{
printf("%d\n",i);
n=n+i;
x++;
break;
}
if(i%m==0)
{
break;
}
}
if(x==10)
{
break;
}
}
printf("%d\n",n);
}
就改了两个地方,你的程序本身没有大毛病,就是一个初始化的x赋了初值,另外一个 m==1和x ==10的判断,m==1是为了找到素数,因为素数是除了本身和1可以被整除的,所以m==1说明这个数从m=i-1一直到1都没有数被整除,就是素数了,x==10是判断是不是有了10个数了,你的题目要求10个素数,这个是控制输出10个数,最后累加就好了。望采纳。
发现了2出错误, 第一处: if(m==1) 这里应该是两个“=” ,第二处:if(x==10) 这里也应该是2个“="
谢谢
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
void main(void){
int i,j,k=0,sum=0,x;
printf("The result is:\n");
for(i=499;;i-=2){
for(j=3;(x=j*j)<=i;j+=2)
if(i%j==0) break;
if(x>=i){
printf("%d ",i);
sum+=i;
if(++k==10) break;
}
}
printf("\nThe sum of them is %d\n",sum);
}
改动如下:
#include
void main()
{
int m, n = 0, i, x = 0;
for (i = 500; i > 1; i--) {
for (m = (i - 1); m > 0; m--) {
if(i % m == 0) break;
}
if(m == 1) {
n = n + i;
x++;
printf("%d\n", i);
}
if(x == 10) break;
}
printf("%d\n", n);
}
运行结果:
499
491
487
479
467
463
461
457
449
443
4696
Press any key to continue