Search
Duplicate
📗

소인수분해

주차
문제번호
11653
언어
C++
티어
브론즈
유형
수학
정수론
소수 판정
nj_Blog
nj_상태
이해도
100%
풀이
사람
이해도 2
13 more properties

문제접근

나눌 수 있는 수를 계속해서 넣고 sort로 정렬

놓쳤던 부분

#include <iostream> #include <vector> #include <cmath> int main() { int N; std::cin >> N; std::vector<int> factors; for (int i = 2; i <= sqrt(N); i++) { while (N % i == 0) { factors.push_back(i); N /= i; } } if (N > 1) { factors.push_back(N); } for (int factor : factors) { std::cout << factor << "\n"; } return 0; }
JavaScript
복사
나눌 수 있을만큼 계속 나누면 될듯

코드

2024 KB

32 ms

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(void) { int n; vector<int> answer; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; if (n != 1) { while (n > 1) { for (int i = 2; i <= n; i++) { if (n % i == 0) { n /= i; answer.push_back(i); break ; } } } for (unsigned int i = 0; i < answer.size(); i++) cout << answer[i] << "\n"; } return (0); }
C++
복사