public class ex011_약수확인 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 2;
boolean divisor = isDivisor(num1, num2);
System.out.println(divisor);
}
public static boolean isDivisor(int num1, int num2)
{
//return num1%num2 == 0 ? true : false;
return num1%num2 == 0;
}
}
다음과 같이 returun 뒤에 이항 연산으로 인한 비교문장, 혹은 삼항연산자를 사용할 수도 있다.
package Yak;
public class ex01 {
int c = 0;
public static boolean isDivisor(int num1, int num2)
{
//return num1%num2 == 0 ? true : false;
return num1%num2 == 0;
}
public static int getSum(int c) {
int sum = 0;
for (int j = 1; j <= c; j++) {
if(isDivisor(c, j)) {
sum += j;
}
}
return sum;
}
}
약수 처리를 하는 메서드이다 ,Dibisor는 약수를 구분하게되고
getSum 은 구분한 약수의 여부를 isDivisor로부터 결과를 반환받아
판단하게 된다.
package Yak;
public class ex01 {
int c = 0;
public static boolean isDivisor(int num1, int num2) {
// return num1%num2 == 0 ? true : false;
return num1 % num2 == 0;
}
public static int getSum(int c) {
int sum = 0;
for (int j = 1; j <= c / 2; j++) {
if (isDivisor(c, j)) {
sum += j;
}
}
return sum;
}
public static boolean isPerfect(int c) {
return getSum(c) == c;
}
}
package Yak;
public class ex02 {
public static void main(String[] args) {
int num1 = 7;
int num2 = 56;
ex01 ov = new ex01();
System.out.println(ov.isPerfect(num1));
}
}
완전수를 판별하는 메서드이며,
getSum 은 하나의 값을 (int c로 취급하여 ) 입력받아. return 으로 sum변수를 내보낸다.
그리고 다른 메서드에서 getsum을 통해 들어간(c) 의 약수의 합이 메인함수에서 받아온 int c와 동일한지
즉, 완전수인지 판별하는 메서드이다.
package Yak;
public class ex01 {
int c = 0;
public static boolean isDivisor(int num1, int num2) {
// return num1%num2 == 0 ? true : false;
return num1 % num2 == 0;
}
public static int getSum(int c) {
int sum = 0;
for (int j = 1; j <= c / 2; j++) {
if (isDivisor(c, j)) {
sum += j;
}
}
return sum;
}
public static void get_divisiors(int a, int b) {
for (int j = a; j <= b; j++) {
if (getSum(j) == j) {
System.out.printf("%d ", getSum(j));
}
}
}
이것은 a,b 범위내의 완전수를 판별한다.
작동순서는 get_divisiors가 두개의 입력값을 받으면, 해당 수의 범위 만큼
getsum 메서드를 불러와 isdivisor 메서드를 통해 약수임을 판별하고 sum에 값을 더한다.
그리고 다시 get_divisiors에서 getsum 메서드를 통해 얻어낸 합계가 자기 자신과 같냐를 판별하여
결과를 출력한다.
public static void get_divisiors2(int a, int b) {
for (int j = a; j <= b; j++) {
if (isPerfect(j)) {
System.out.printf("%d ", getSum(j));
}
}
}
public static boolean isPerfect(int c) {
return getSum(c) == c;
}
}
혹은 완전수를 판별하는 메서드를 따로 만들어
getSum(c) 에 대해 완전수를 판별하는 조건식으로 만들고,
True 여부에 따라서 해당 번째 (j) 까지의 약수의 합 (getSum 메서드) 를 구하는 방법으로도 쓸 수 있다.
'Language > Java 기본' 카테고리의 다른 글
ArrayList (0) | 2021.01.08 |
---|---|
메서드 오버로딩(Overloading) (0) | 2021.01.08 |
클래스와 객체 (0) | 2021.01.07 |
객체 지향프로그래밍 (Object Oriented Programming) (0) | 2021.01.07 |
메서드 (0) | 2021.01.07 |