Java가 n보다 작은 질수를 구하는 3가지 방법
질수는 소수라고도 부른다. 1보다 큰자연수 중에서 1과 이 정수 자체를 제외하고 다른 자연수정돈하다에 의해 정의될 수 없는 수(1과 자체 두 개인수만 있는 수로 정의할 수 있다.
가장 작은 소수는 2이자 소수 중 유일하다짝수.기타 소수는 모두 홀수이다.질수는 무한히 여러 개가 있기 때문에 가장 큰 질수는 존재하지 않는다.
1: 정의에 따라 해답을 구한다.
또한 가장 멍청한 방식으로 효율이 비교적 낮다.
package test.ms;
public class FindPrime {
// find the prime between 1 to 1000;
public static void main(String[] args) {
printPrime(1000);
}
public static void printPrime(int n){
for(int i = 2; i < n ; i++){
int count = 0;
for(int j = 2 ; j<=i; j++){
if(i%j==0){
count++;
}
if(j==i & count == 1){
System.out.print(i+" ");
}
if(count > 1){
break;
}
}
}
}
}
2: 제곱근:
package test.ms;
public class Prime {
public static void main(String[] args) {
for(int j = 2; j<1000; j++){
if(m(j)){
System.out.print(j+" ");
}
}
}
public static boolean m(int num){
for(int j = 2; j<=Math.sqrt(num);j++){
if(num%j == 0){
return false;
}
}
return true;
}
}
3: 법칙을 찾다(한 논단에서 발췌한 토론)가장 작은 소수는 2이자 소수 중의 유일한 짝수이다.다른 소수는 모두 홀수다.질수는 무한히 여러 개가 있기 때문에 가장 큰 질수는 존재하지 않는다.
package test.ms;
import java.util.ArrayList;
import java.util.List;
public class Primes {
public static void main(String[] args) {
//
List<Integer> primes = getPrimes(1000);
//
for (int i = 0; i < primes.size(); i++) {
Integer prime = primes.get(i);
System.out.printf("%8d", prime);
if (i % 10 == 9) {
System.out.println();
}
}
}
/**
* n
*
* @param n
*
* @return n
*/
private static List<Integer> getPrimes(int n) {
List<Integer> result = new ArrayList<Integer>();
result.add(2);
for (int i = 3; i <= n; i += 2) {
if (!divisible(i, result)) {
result.add(i);
}
}
return result;
}
/**
* n
*
* @param n
* @param primes
*
* @return n primes , true。
*/
private static boolean divisible(int n, List<Integer> primes) {
for (Integer prime : primes) {
if (n % prime == 0) {
return true;
}
}
return false;
}
}
첫 번째와 두 번째는 모두 매우 간단한 방법이다.세 번째 방법은 하나의 질수의 특성을 설명했다. 모든 질수에서 2만 짝수이다.
만약 한 수가 그 전의 질수에 의해 정돈될 수 있다면, 이 수는 질수가 아니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.