• toc {:toc}

๋ฌธ์ œ

์ •์ˆ˜ N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์†Œ์ธ์ˆ˜๋ถ„ํ•ดํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ N (1ย โ‰ค N โ‰ค 10,000,000)์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

N์˜ ์†Œ์ธ์ˆ˜๋ถ„ํ•ด ๊ฒฐ๊ณผ๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค. N์ด 1์ธ ๊ฒฝ์šฐ ์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ถœ์ฒ˜:https://www.acmicpc.net/problem/11653

ํ’€์ด

  1. N์„ ์†Œ์ˆ˜k๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์งˆ ๋•Œ k๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
  2. ๋ฃจํŠธ(N)์ดํ•˜์˜ ์ˆ˜๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ƒ๊ฐํ–ˆ์œผ๋‚˜ while๋ฌธ์ด ์•ˆ๋Œ์•„๊ฐ€๋Š” ๋ฌธ์ œ์— ๋ด‰์ฐฉ.
  3. ๊ทธ๋Ÿฌ๋‚˜ 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;
}