방법 1)
package 메소드;
import java.util.Scanner;
public class Ex10_예제 {
public static void main(String[] args) {
// 약수의 합을 구하여 반환하는 getSum() 메소드를 작성하세요.
Scanner sc = new Scanner(System.in);
System.out.print("구하고 싶은 수 : ");
int num = sc.nextInt();
getSum(num);
getDivisor(num);
}
public static void getSum(int num) {
int sum = 0;
System.out.print(num+"의 약수의 합 : ");
for(int i = 1; i <= num; i++) {
if(num%i == 0) {
sum += i;
}
}
System.out.print(sum+" ");
System.out.println();
}
public static void getDivisor(int num) {
System.out.print(num+"의 약수 : ");
for(int i = 1; i <= num; i++) {
if(num%i == 0) {
System.out.print(i+" ");
}
}
}
}
방법2)
package 메소드;
import java.util.Scanner;
public class Ex10_다른풀이 {
public static void main(String[] args) {
// 약수의 합을 구하여 반환하는 getSum() 메소드를 작성하세요.
Scanner sc = new Scanner(System.in);
System.out.print("구하고 싶은 수 : ");
int num = sc.nextInt();
int result1 = getSum(num);
System.out.println(num + "의 약수의 합 : " + result1);
getDivisor(num);
}
public static int getSum(int num) {
int sum = 0;
for (int i = 1; i <= num; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum;
}
public static void getDivisor(int num) {
int result2 = 0;
System.out.print(num+"의 약수 : ");
for (int i = 1; i <= num; i++) {
if (num % i == 0) {
System.out.print(i+" ");
}
}
}
}
개인적인 생각으로 이 문제는
메소드를 이용하기보다는
main에서 for문 이용하는 것이 더 효율적인 것 같아요.
메소드에서는 약수의 합과 약수 나열을 따로 작성해야해줘서
조금 귀찮은 부분?
'언어 > JAVA' 카테고리의 다른 글
메소드 오버로딩 (0) | 2023.03.04 |
---|---|
메소드_2~1000까지 포함된 완전수 출력 (0) | 2023.03.04 |
메소드_약수인지 판단하여 true false 출력하기 (0) | 2023.03.04 |
메소드_2개의 정수를 입력받아 n제곱만큼 값을 반환하는 메소드 작성(완료) (0) | 2023.03.04 |
메소드_2개의 정수 중 10에 더 가까운 수를 출력 (0) | 2023.03.04 |
댓글