소수 인지 체크
어떤수가 소수인지 체크 하기 위해서 2부터 검사값까지 모두 나누어 보면서 나누어 떨어지는 수가 있는지 찾아보면 되지만 2부터 루트(검사값)까지만 모두 나누어 봐도 알수 있다.
public static boolean check(int n) {
if(n==1)
return false;
for(int i=2;i<=Math.sqrt(n);i++) {
if(n%i==0) {
return false;
}
}
return true;
}
최대공약수 , 최소 공배수
유클리드호제법을 이용해서 구함
유클리드 호제법 : 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다.
int r=1;
val1 은 큰수 val2 는 작은수
while(r>0){
r = val1 % val2;
val1 = val2;
val2 = r;
}
LCM = tmp1 * tmp2 / val1; // 최소 공배수
반응형
'알고리즘(자바)' 카테고리의 다른 글
[프로그래머스] (2018년)KAKAO BLIND RECRUITMENT 오픈채팅방 (0) | 2019.09.11 |
---|---|
[프로그래머스] 해시알고리즘 완주하지 못한 선수 (0) | 2019.09.09 |
[백준]BFS 알고리즘 과 토마토 문제 (0) | 2019.09.02 |
순열 Permutation 알고리즘 (0) | 2019.07.18 |
알고리즘 언어 선택 (1) | 2019.05.13 |
알고리즘 (0) | 2019.04.14 |