首页 > 解决方案 > n个素数之和java,困惑

问题描述

我已经阅读了几篇关于此的帖子,我什至在我的一次考试中也这样做了,但在 vb.net 中。它工作得很好,但是当我尝试执行我的程序时,eclipse 只是不停地运行,否则它会给我错误的答案。这是我的第四次尝试。我需要添加前 n 个素数的总和,因此我检查一个数字是否为素数。由于某种原因,循环不会停止。任何帮助,将不胜感激。谢谢。

int count = 0;
int noMod0s = 0;
int total = 0;
//static boolean prime;
for (int y = 2;count<5;y++) {
    for (int z = 1;z<y;z++) {
        if (y % z == 0) {
            noMod0s++;
        }
    }
    if (noMod0s == 1) {
        total = total + y;
        count++;
        noMod0s = 0;
    }
}
System.out.println(total);

标签: javamathcountsum

解决方案


您的代码至少有两个问题:

  • 您不会noMod0s为每个单独的素数测试重置变量。您应该在第二个循环之前执行此操作。
  • 第二个循环应该从 2 而不是 1 开始,才能成为有效的素数测试。当然,在这种情况下,您将进行比较noMod0s == 0。它的工作原理相同,但它可以更清楚地了解代码在做什么。

推荐阅读