Tôi cần phương thức trả về số nguyên tố trong một mảng.trả về một dãy số nguyên tố
Vì vậy, nếu đưa ra: primeArray (5)
hơn một mảng như vậy nên được trả lại: (2, 3, 5)
Đối với một số lý do này dường như không làm việc cho tôi:
public static int[] primeArray(int numFind)
{
//determines the size of the array returned
int primeTotal = 0;
//loop to find total prime numbers
for (int j = 1; j <= numFind; j ++)
{
if (isPrime(j))
primeTotal +=1;
}
//declare array to be returned
int[] numA = new int[primeTotal];
//current index of prime number
int iP = 0;
//loop to add prime elements to array
for (int x = 1; x <= numFind; x ++)
{
if (isPrime(x))
{
numA[iP]=x;
iP++; // <--- THIS IS CAUSING ME PROBLEMS
}
}
return numA;
}
public static boolean isPrime(int n)
{
for (int i = 2; i < n; i++)
{
if(n%i==0)
return false;
}
return true;
}
Đây là những gì tôi đang sử dụng để kiểm tra mã của tôi:
int[] num = primeArray(11);
System.out.println(num[0]);
System.out.println(num[1]);
Nhưng đối với đầu ra tôi nhận được điều này:
1
2
Nếu tuy nhiên tôi nhận xét iP ++; so với câu lệnh if cuối cùng quyết định thực thi CHỈ khi các số nguyên được chuyển thành tham số trong: isPrime (j) nhưng sau đó nếu đánh bại toàn bộ mục đích của phương thức primArray vì tôi cần phương thức primArray để trả về một mảng các số nguyên tố.
Mã của bạn có vẻ tốt đẹp .. Chỉ cần lặp mảng .. – Shashi