- toc {:toc}
๋ฌธ์
์ ์ N์ด ์ฃผ์ด์ก์ ๋, ์์ธ์๋ถํดํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ N (1ย โค N โค 10,000,000)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
N์ ์์ธ์๋ถํด ๊ฒฐ๊ณผ๋ฅผ ํ ์ค์ ํ๋์ฉ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ค. N์ด 1์ธ ๊ฒฝ์ฐ ์๋ฌด๊ฒ๋ ์ถ๋ ฅํ์ง ์๋๋ค.
์ถ์ฒ:https://www.acmicpc.net/problem/11653
ํ์ด
- N์ ์์k๋ก ๋๋์ด ๋จ์ด์ง ๋ k๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.
- ๋ฃจํธ(N)์ดํ์ ์๋ง ์ฌ์ฉํ๋ ๋ฐฉ์์ ์๊ฐํ์ผ๋ while๋ฌธ์ด ์๋์๊ฐ๋ ๋ฌธ์ ์ ๋ด์ฐฉ.
- ๊ทธ๋ฌ๋ while๋ฌธ ์ดํ N์ด 0 ๋๋ 1์ด ์๋๋ผ๋ฉด N ๋ํ ์์ธ์๋ค.
#include <iostream>
using namespace std;
bool is_primeNum(int n);
int main()
{
int N;
cin >> N;
for(int i=2; i*i<=N; i++)
{
if(is_primeNum(i))
{
while(N%i==0)
{
cout << i << endl;
N = N/i;
}
}
}
if((N!=0)&&(N!=1))
cout << N << endl;
return 0;
}
bool is_primeNum(int n)
{
int i = 2;
while(i*i<=n)
{
if(n%i==0)
return false;
i++;
}
return true;
}