[C++ 언어-기초실습-5] N보다 작은 자연수 중 a or b의 배수의 합을 구하시오?
- 다운 사이트 : https://sourceforge.net/projects/orwelldevcpp/
- 웹컴파일러 : https://www.tutorialspoint.com/compile_c_online.php
오늘은 Project Euler 사이트에 있는 문제 하나가 재밌는 것이 있어서 한번 풀어 봅니다.
1. 10보다 작은 자연수 중 3 or 7의 배수의 합을 구하자!
원래는 원본 문제로 3 or 5의 배수여야 하는데 배수의 숫자를 변경하여 한번 구해 보았습니다.
10보다 작은 자연수 범위를 구해야 합니다.
for(int i=1;i<10;i++){
}
이렇게 for문 i을 1부터 10까지 루프를 돌리면 됩니다. 여기서 i의 값은 1~10까지의 숫자로 루프를 돌겠죠.
이때, i가 3의 배수인가 7배수 인지만 알아내면 됩니다.
if(i%3==0) cout<<i<<endl;
else if(i%7==0) cout<<i<<endl;
이렇게 말이죠. i를 3으로 나눈 나머지가 0이면 3의 배수이고 7로 나눈 나머지가 0이면 7의 배수가 됩니다.
그러면 실제 3 or 7의 배수가 정확히 추출되는지 몰까요.
for(int i=1;i<10;i++){
if(i%3==0) cout<<i<<endl;
else if(i%7==0) cout<<i<<endl;
}
[결과]

정확히 추출 되었네요.
그럼 3 or 7배수인 자연수들을 더해 볼까요.
for(int i=1;i<10;i++){
if(i%3==0) sum+=i;
else if(i%7==0) sum+=i;
}
이렇게 각 3의 배수인 수와 7개 배수인 수를 각각 sum변수에 더하면 됩니다. 그러면 총 합은 3의 배수 or 7의 배수인 수들의 합을 구할 수 있게 됩니다.
2. 코딩
그러면 실제 문제로 N보다 작은 자연 수 중 a or b의 배수의 합을 구해 볼까요.
[전체소스]
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int n, a, b;
int sum=0;
cout<<"자연수 N과 두개의 배수 A, B를 입력 하시오? ";
cin>>n>>a>>b;
for(int i=1;i<10;i++){
if(i%3==0) sum+=i;//cout<<i<<endl;
else if(i%7==0) sum+=i; //cout<<i<<endl;
}
cout<<"자연수 "<<n<<"보다 작은 "<<a<<", "<<b<<"의 배수의 합 : "<<sum<<endl;
return 0;
}
위 코딩은 자연수 N과 2개의 배수 a,b를 입력을 받도록 코딩했습니다.
[결과]

마무리
자연수 N과 a,b를 입력하여 자연수 N보다 작은 자연수 중 a or b의 배수인 수들을 찾아 내어 합을 구하는 코딩을 해 보았습니다. 위 코딩에서는 설명한 3 or 7의 배수들의 합을 구했지만 테스트 하실 때는 다른 자연수와 배수들을 입력해서 그 결과를 확인 해 보시기 바랍니다.

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.
Thank you