본문 바로가기
프로그래밍/백준알고리즘

백준 알고리즘 2581번 문제 풀이 (c언어, 자바)

by 밍구몬 2019. 7. 24.

백준 알고리즘 2581번 문제는 다음과 같습니다.

 

M과 N사이의 소스들의 합과 최솟값을 구하는 문제입니다.

 

1. M이 1일경우 1은 소수가 아니기 때문에 1을 증가시켜주고 시작합니다.

2. M부터 N까지니 for문을 M부터 시작해 N까지 돌려 줍니다.

3. for문 안에 for문을 만들어 소수인지 확인을 합니다. 소수가 아니라면 check를 0으로 만들고 나옵니다.

4. 만약 check값이 1이라면 소수이므로, sum에 더해주고 min값을 설정해 줍니다.

5. for문을 모두 빠져나왓을때 sum이 0이라면 -1을 출력해주고 0이 아니라면 sum값과 min값을 출력해 줍니다.

C언어

#include<stdio.h>

int main(){
    
    int m,n;
    int sum=0;
	int min=10001;
    scanf("%d %d",&m,&n);
    if (m==1)
		m++;
    for(;m<=n;m++) {
        int check=1;
        for(int j=2;j<=m/2;j++) {
            if(m%j == 0){
                check=0;
                break;
            }
        }
        if(check==1) {
            if (min>m)
                min=m;
            sum+=m;
        }
    }
    if(sum==0)
        printf("-1\n");
    else {
        printf("%d\n%d\n",sum,min);
    }
    return 0;
}

Java

import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int m = s.nextInt();
		int n = s.nextInt();
		int sum=0, min=10001;
		if (m==1)
			m++;
		for(;m<=n;m++) {
			boolean check=true;
			for(int j=2;j<=m/2;j++) {
				if(m%j == 0) {
					check=false;
					break;
				}
			}
			if(check) {
				if (min>m)
					min=m;
				sum+=m;
			}
		}
		if(sum==0)
			System.out.println("-1");
		else {
			System.out.println(sum);
			System.out.println(min);
		}
	}

}