【问题标题】:Java non-prime numbersJava 非质数
【发布时间】:2016-02-11 18:38:15
【问题描述】:

我想打印一个区间中的非素数并计算数字的数量。例如,在 3 到 10 之间,此区间的非质数为 4、6、8、9。

我创建了一个数组并将非素数放入数组中。我可以在屏幕上打印它们,但是当我试图到达数组nonPrime[0]nonPrime[1] 上的每个元素时,似乎0。另外我需要足够的维度数组,因为它无助于计算非素数的数量。

这就是我尝试过的:

public static void main (String[] args)
{       
    int x=10;//end of the interval
    int y=2;//first of the interval
    int[]nonPrime=new int[10];
    for(int i=y+1;i<x;i++)
    {
        for(int j=2;j<x;j++)
        {  
            if(i!=j)
            {
                if((i%j==0))
                {
                   nonPrime[j]=i;
                   break;
                }
            }
        }
    }
}

【问题讨论】:

  • 你可以使用 List 而不是数组;这样您就不必事先知道尺寸。
  • 您确定您的素数算法是正确的吗?此外,数组似乎不是最佳选择,因为您通常不知道一系列数字中素数或非素数的数量。请改用列表。
  • nonPrime[0] 和 nonPrime[1] 似乎为 0 – 你期待什么?您使用j 变量寻址数组,该变量从2 运行到x。当然,索引 0 和 1 永远不会被设置,因此会有它们的默认值。你也可以运行你的内部循环直到j&lt;=i/2(也只有奇数)而不是j&lt;x:节省一些迭代并删除不必要的条件检查。
  • 你能写个简单的代码吗?

标签: java arrays loops primes


【解决方案1】:

您可以像这样使用 ArrayList 而不是 int 数组:

import java.util.ArrayList;
public static void main (String[] args)
{       
    int x=10;//end of the interval
    int y=2;//first of the interval
    ArrayList<Integer> nonPrime = new ArrayList<Integer>();
    for(int i=y+1;i<x;i++)
    {
        for(int j=2;j<i;j++)
        {  
            if((i%j==0))
            {
               nonPrime.add(i);
               break;
            }
        }
    }
}

【讨论】:

  • 有错误所以我不能在java中运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
相关资源
最近更新 更多