java - 如何完成关于 Erathostenes 筛子的代码?
问题描述
这是关于使用这种方法找到从 2 到 1000 的素数,但我无法得到解决方案,我一直在思考并尝试解决这个问题三天。我迫切需要帮助,所以如果有人可以帮助我,我将不胜感激
我尝试了另一个 for 循环和一个 if 语句,因为我的老师说我只需要另一个循环或只需要一个代码行,但我似乎无法得到解决方案。我在这方面真的很糟糕,所以如果我的代码看起来令人毛骨悚然,我很抱歉
public class Practica {
public static void main(String []
byte []marcado = new byte [1000];
for (int i = 2; i < 1000; i++);
if (marcado[i] == 1) {
for (int j = 2; i*j < 1000; j++) {
marcado [i*j] = 0;
}
}
我希望打印所有质数
解决方案
试一试:
public static void main(String[] args) {
byte[] marcado = new byte[1000];
for (int i = 2; i*i < 1000; i++) {
if (marcado[i] == 0) {
for (int j = 2; i * j < 1000; j++) {
marcado[i * j] = 1;
}
}
}
// print the numbers:
for (int i = 1; i < 1000; i++) {
if(0 == marcado[i]){
System.out.print(" " + i);
}
}
}
除了删除语法错误之外,我还颠倒了逻辑,使得 marcado[i]==0 表示素数,否则表示非素数。
基于您的方法的另一种可能性是用“1”初始化所有数组元素(例如,使用填充);
推荐阅读
- scala - 如何在 flink 中统一度量指标
- javascript - 绑定时特殊字符后的AngularJs换行
- android - 如何阻止 Android WebView 更改标头的大小写?
- android - 如何将 Activity 对象传递给 onBindViewHolder 方法以在 getScaledBitmap 方法中使用该对象
- c++ - 使用较新的 boost 库和使用旧版本的预编译二进制文件
- php - 无法从数据库中获取 int 并使用它 PHP
- azure - 如何使用我在 Azure Active Directory 中创建的应用程序注册本地创建的应用程序?
- python - Pygame 蛇吃自己
- r - 打印数据集的 2 个连续数据条目的第一个和最后一个值以绘制差异 - 在 R 中
- javascript - 在 Ajax 上获取 PDF 的输出流并在另一个文档上打开它