【发布时间】: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<=i/2(也只有奇数)而不是j<x:节省一些迭代并删除不必要的条件检查。 -
你能写个简单的代码吗?