주어진 int 인수까지 소수를 인쇄하는 void 메소드를 만들려고합니다. 이것은 내가 가진 것이며 작동하지 않습니다.하나의 방법을 사용하여 n 소수를 인쇄
public class listPrimes {
public static void main(String[] args) {
printPrimes(1000);
}
static void printPrimes(int max) {
int counter = 0;
for (int i = 2; i <= max; i++) {
for (int n = 2; n < i; n++) {
if (i % n == 0) {
counter++;
}
}
if (counter == 0) {
System.out.println(i);
counter = 0;
}
}
}
}
아래의 두 가지 방법으로 원하는 효과를 만들 수 있었지만 하나만 사용하고 싶습니다. 위의 코드에서 무엇이 잘못 되었습니까?
public class listPrimes {
public static void main(String[] args) {
printPrimes(1000);
}
private static void printPrimes(int max) {
for (int i = 2; i <= max; i++) {
if (primeCheck(i)) {
System.out.println(i);
}
}
}
static boolean isPrime(int check) {
for (int i = 2; i < check/2; i++) {
if (check % i == 0) {
return false;
}
}
return true;
}
}
코드에 어떤 문제가 있습니까? 잘못된 출력입니까? – nhahtdh
첫 번째 방법은 2와 3이 모두 출력되므로 그 이유는 다음과 같습니다! –
나는 이것이 단 하나의 방법을 시도하는 퍼포먼스상의 이유로 기대된다. 만약 발견 된 소수의 레코드를 유지하고 더 큰 'n'의 각 반복에 대한 테스트를한다면 ... 이미 테스트 한 많은 non prime divisors를 점증 적으로 점검합니다. – sradforth