java - 我想存储从 3 到 100 的素数并将它们存储在数组中而不使用构造函数

标签 java arrays

我已经用java完成了该程序,但它没有按预期工作。我想找到素数(不使用构造函数或方法)并将它们存储在数组中,但结果不同。

public class Prime {
    public static void main(String []args){
        int s[]=new int[100];
        for (int i=3;i<=100;i++){
            int c=0;
            for (int j=1;j<=i;j++){
                if (i%j==0){
                c++;
                }
            }
            if (c<3){
                for (int a=0;a<s.length;a++){
                    s[a]=i;
                }
            }
        }
        for (int b=0;b<s.length;b++){
                System.out.println(s[b]);
        }
    }
}

预计: 3 5 7 。 。 。 97

输出得到:

最佳答案

错误在这里:

for (int a=0;a<s.length;a++){
    s[a]=i;
}

每当您找到质数时,请将 s每个元素设置为该数字,这意味着最终 s 将被填充与你找到的最后一个素数 - 97。

不要用找到的素数填充数组,而是声明一个名为 next 的新变量,用于跟踪下一个素数应该在数组中的位置:

int s[]=new int[100];
int next = 0; // the first prime should go in index 0
for (int i=3;i<=100;i++){
    int c=0;
    for (int j=1;j<=i;j++){
        if (i%j==0){
            c++;
        }
    }
    if (c<3){
        s[next] = i; // put it in next
        next++; // the next prime should go in the next index
    }
}
for (int b=0;b<next;b++){ // only loop to "next", because the indices past "next" are not set
    System.out.println(s[b]);
}

关于java - 我想存储从 3 到 100 的素数并将它们存储在数组中而不使用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57230752/

相关文章:

javascript - 带有 eventListener 的原型(prototype)内的 Array.from(..) 不起作用

java - 在 android 中更改 ImageView 的位图图像

java - Glassfish线程池问题

c++ - 对静态数组的初始值设定项列表大小错误发出警告

c - 了解与结构数组相关的 Malloc 和 Realloc

javascript - 从 PHP 返回 JavaScript 中的多个数组

java - 你能制作一个不可关闭、不可离开的 Java 应用程序吗?

java - 在 Kotlin/Java 中使用证书和私钥对发布请求进行身份验证时出现问题

java - 方法密集型 Java 对象的内存占用是多少?

java - 如何为控制台输出添加间距