Eggs Sunny Side Up
본문 바로가기
언어/JAVA

메소드_약수와 약수의 합을 구하는 메소드

by guswn100059 2023. 3. 4.

방법 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문 이용하는 것이 더 효율적인 것 같아요.

 

메소드에서는 약수의 합과 약수 나열을 따로 작성해야해줘서

조금 귀찮은 부분?

댓글