알고리즘
C++ 소인수분해
Chars4785
2019. 1. 11. 21:51
소인수 분해
소수로 나누는 것들
72
2
2
2
3
3
#include <iostream>
#include <time.h>
using namespace std;
int num; // 입력받을 숫자
int k = 2; // 2부터 1씩 증가하는 숫자
int main() {
cin >> num;
while (num != 1) {
if (num % k == 0) {
cout << k <<endl;
num /= k;
}
else {
k++;
}
}
return 0;
}
먼저 소수를 다 찾고 나누는 방식을 선택 했지만 , 시간이 너무 많이 걸린다.
#include <iostream>
#include <time.h>
using namespace std;
int prim[10000000];
void PrimNum(int num)
{
int index=0;
for(int i=2;i<=num;i++)
{
bool flag = true;
for(int j=2;j<i;j++)
{
if(i % j ==0)
{
flag =false;
break;
}
}
if(flag)
prim[index++] = i;
}
}
int main() {
int num;
cin >>num;
int index=0;
PrimNum(num);
while(1)
{
if(num % prim[index] == 0 )
{
cout<< prim[index]<<endl;
num /= prim[index];
index =0;
}else{
index++;
}
if(prim[index]==0)
break;
}
return 0;
}