我正在使用2个数组。从第一个数组开始要检查哪个数字是素数,如果这个数字是素数,那么我想将该数字插入第二个数组,然后打印第二个数组。
在这种情况下,它仅插入第一个数组的第一个元素,无论它是否是素数,但我只想插入它的素数。
import java.util.*;
class test
{
public static void main(String args[])
{
int[] a1={9,5,7,3,4,6};
int[] a2=new int[4];
int index=0;
boolean isprime=true;
//to check for prime
for(int i=0;i<a1.length;i++)
{
//System.out.println(a1[i]);
for(int j=2;j<a1[i];j++)
{
if(a1[i]%j==0)
{
isprime=false;
break;
}
} //to add into another array
if(isprime)
{
a2[index++]=a1[i];
}
}
for(int k=0;k<a2.length;k++)
{
System.out.println(a2[k]);
}
}
}
5、7、3
答案 0 :(得分:0)
问题在于标记isprime。仅在任何循环之前将其设置为true,并且当算法将处理第一个非素数时,它将永远设置为false。如果将 boolean isprime = true; 放在第一个循环中,它将起作用。
看到下面的声音:
//to check for prime
for(int i=0;i<a1.length;i++)
{
boolean isprime=true;
//rest of the program
}