백준 2581 소수
2023. 4. 17. 22:16ㆍ카테고리 없음
▶문제
자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.
예를 들어 M=60, N=100인 경우 60 이상 100 이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.
요약하자면
자연수 a,b를 입력받아 a~b까지의 수중 소수인 것들의 합과 소수중 제일 작은 값을 출력하는 문제입니다.
저는 아래와 같은 코드를 작성하였습니다.
아직은 재귀함수를 완벽히 이해하지 못해 단순 반복문으로 코드를 작성하였지만
곧 재귀 함수를 사용한 문제풀이도 올리도록 하겠습니다.
#include<stdio.h>
int main(void){
int a,b;
int o=0,min=0, sum=0;//변수 초기화
scanf("%d %d",&a,&b);
for(int i=a;i<=b;i++){//a수 부터~ b수까지 반복
for(int j=2;j<=i;j++){ //a~b수에 j를 넣어 소수인지 판단하는 조건문
if(i%j==0) //i%j
if(i==j){
sum+=i;
o++;
if(o==1)
min=i;
break;
}
else
break;
}
}
if(sum==0)
printf("-1");
else
printf("%d\n%d",sum,min);
return 0;
}