java - 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);
解决方案
您的代码至少有两个问题:
- 您不会
noMod0s
为每个单独的素数测试重置变量。您应该在第二个循环之前执行此操作。 - 第二个循环应该从 2 而不是 1 开始,才能成为有效的素数测试。当然,在这种情况下,您将进行比较
noMod0s == 0
。它的工作原理相同,但它可以更清楚地了解代码在做什么。
推荐阅读
- c++ - 为什么我们不能将 int array[] 传递给 hoo(int* &p)?
- prolog - Prolog:如果可以在图中遍历两个节点
- mysql - 将所有大写字母值更新为大写
- sql - 如何在 SQL Server 中填充所有日期的数据
- directshow - 使用IAMStreamConfig接口时蓝屏
- java - 如何创建水平直方图?【算法】JAVA
- javascript - 如何在网页上加载图像之前显示加载器覆盖?
- google-colaboratory - 如何在 Google Colab 中查看上次编辑时间?
- java - Google 自定义搜索 API:已超出未经验证使用的每日限制。继续使用需要注册
- excel - Localbitcoins 认证的 HTTP POST 请求错误