프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/12921
소수란?
- 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수
- 1은 소수가 아니다.
<public boolean firstMethod(int number) {
for (int i = 2; i < number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
public boolean secondMethod(int number) {
for (int i = 2; i < number / 2; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
익명 함수
interface Strategy{
boolean compare(int a);
}
public class AnonymousClassInPrimeNumber {
boolean isPrime(int num, Strategy stmt) {
for (int i = 2; stmt.compare(i, num); i++) {
System.out.println(i);
if(num % i == 0) return false;
}
return true;
}
public static void main(String[] args) {
AnonymousClassInPrimeNumber acip = new AnonymousClassInPrimeNumber();
boolean r = acip.isPrime(17, new Strategy() { // n-1까지 대입하는 경우
@Override
public boolean compare(int i, int num) {
return i<num;
}
});
System.out.println(r);
boolean r2 = acip.isPrime(17,new Strategy() { // n/2의 값까지 대입하는 경우
@Override
public boolean compare(int i,int num) {
return i<num/2;
}
});
System.out.println(r2);
}
}
람다식 활용
interface StatementStrategy{
boolean compare(int a, int b);
}
public class TemplateCallbackPrime {
boolean isPrime(int num, StatementStrategy stmt) {
for (int i = 2; stmt.compare(i, num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
TemplateCallbackPrime tcp = new TemplateCallbackPrime();
System.out.println(tcp.isPrime(17,(i,num) -> i<num));
System.out.println(tcp.isPrime(17,(i,num) -> i<num/2));
}
}