素数平均程序

时间:2016-05-12 16:07:11

标签: c for-loop

我想计算1到10之间素数的平均值,我写了一个程序如下:

#include <stdio.h>
int main()
{ 
    int i, j, sum = 0, count = 0;
    loop1: 
        for(i = 2; i <= 10; i++)
        {
            for(j = i - 1; j > 1; j--)
            {
                if(i % j == 0)
                {
                    goto loop1;
                }
            }
            sum = sum + i;
            count++;
        }
        printf("The avg:%d", (sum / count));
        return 0;
}

请帮助我该程序是否正确。

3 个答案:

答案 0 :(得分:2)

简单回答:

#include <stdio.h>

int main() {

    float sum = 0, count = 0, average;
    for(int i=2; i<11; i++){
        for(int j=2; j<=i; j++){
            if(j==i){
                sum+=i;
                count++;
            }else if(i%j==0){
                break;
            }
        }
    }
    average=sum/count;
    printf("Average = %.2f", average);

    return 0;
}

答案 1 :(得分:0)

“正确”是什么意思?

如果对你来说是正确的意味着它是有效的:那很容易为你自己验证。

如果正确意味着你正在达到最佳实践,那么,不,你错过了他们,我很害怕。

goto:关于最简单的“不要使用那个”标志。

“更好”的方法是编写一个测试数字是否为素数的函数。

答案 2 :(得分:0)

请确保您不习惯使用goto:语句。你的程序不正确。这里,当声明

if(i % j == 0)

返回true,goto:语句将控制权转移到父for循环的开头,循环将从重新开始运行。这样,您将永远无法获得所需的输出。根据您的问题,您的解决方案是错误的。修改后的方法是

#include <stdio.h>
int main()
{ 
     int i, j, sum = 0, count = 0,flag;
     for(i = 2; i <= 10; i++)
     {    
         flag=0;
         for(j = i - 1; j > 1; j--)
         {
             if(i % j == 0)
             {
                 flag=1;
                 break;
             }
         }
         if(flag==0)
         {
              sum = sum + i;
              count++;
         }

     }
     printf("The avg:%d", (sum / count));
     return 0;
}