求500以内十个最大素数及其和并将其输出
int findbigsushu()
int main()
{
printf("\nsum=%d\n",sum);
return 0;
}
int findbigsushu()
{
int i,j,m,sum;
sum=0;
for(i=500;i>=1;i--)
{
for(j=2;j<i;j++)
{
for(m=1;m<=10;m++)
{
if(i%j==0)
{
printf("%6d",i);
sum=sum+i
m=m+1;
}
}
}
}
return sum;
}
为什么陷入死循环之中无法自拔
并不是死循环
for (i = 500; i >= 1; i--) {
for (j = 2; j < i; j++) {
for (m = 1; m <= 10; m++) {
if (i % j == 0) {
printf("%6d",i);
sum = sum + i;
m = m + 1;
}
}
}
}
只是所有符合 i % j == 0 的数都被统计了10次
for (m = 1; m <= 10; m++) {} 没有起到有效的限制作用 数据量为原来10倍
正确的限制如下:
int findbigsushu() {
int i, j, m, sum;
m = 0;
sum = 0;
for (i = 500; i >= 1; i--) {
for (j = 2; j < i; j++) {
if (i % j == 0) {
printf("%6d",i);
sum = sum + i;
m = m + 1;
if (10==m){
return sum; //在得到第十个数的时候 结束方法
}
continue;//若符合条件就跳出当前循环 进入下个循环
}
}
}
return sum;
}
以为是java。。。
#include<stdio.h>
int findbigsushu();
int main()
{
int sum = findbigsushu();
printf("\n sum = %d \n",sum);
return 0;
}
int findbigsushu()
{
int i,j,m,sum;
bool juge = false;
sum=0,m=0;
for(i=500;i>=1;i--)
{
for(j=2;j<i;j++)
{
if(i%j==0){
break;
}
}
if(j==i){
m++;
sum = sum + i;
printf("%2d i=%2d\n",m,i);
}
if(m==10){
break;
}
}
return sum;
}
//看不懂你m的意思
因为M那里,每次循环,都重新计算一遍
,,看你这个问题,,,再次打开了C 的编辑器,,,这个是我刚计算的,测试成功
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int max ;
printf("请输入一个 数字:");
scanf("%d",&max);
printf("\n%d", fun_bigsushu(max));
}
int fun_bigsushu(int max )
{
int i,j,m,sum ,is_ok;
m = sum = is_ok = 0 ;
for(i=max;i>1;i--)
{
if( m ==10)
break;
is_ok = 0;
for(j=i-1 ;j> 1;j--)
{
if(i % j == 0)
is_ok=1;
}
if(is_ok == 0 )
{
sum += i ;
m+=1;
printf("%d,",i);
}
}
return sum ;
}
int i,j,sum;
int m = 0;//m用来计数
sum=0;//用来计算和,
for(i = 500; i >= 1; i--)
{
if(m >= 10)
{
break;
}
for(j = 2; j < i; j++)
{
if( i%j == 0)break;//不是素数
}
if( j > sqrt(i))//是素数
{
printf("%6d",i);
sum = sum + i;
m = m + 1;
}
}