자연수 N(3<=N<=1000)이 입력
소수의 곱으로 표현
EX) 5! => 3 1 1 (2-3번, 3-1번, 5-1번)
#include <iostream>
using namespace std;
int main() {
int n;
cin>>n;
int arr[1001]={0,};
for(int i=2;i<=n;i++){ //2부터 N까지 반복 -> 팩토리얼
int temp=i;
int div=2;
while(temp!=1){
while(temp%div==0){ //2부터 증가하면서 나누어 떨어질때까지 반복
arr[div]++;
temp/=div;
}
div++;
}
}
for(int i=2;i<=n;i++){
if(arr[i]!=0){
cout<<arr[i]<<" ";
}
}
return 0;
}
자연수 N(10<=N<=1,000)이 입력
일의 자리부터 연속된 0의 개수를 출력
1) 2와 5를 곱하면 10이 됨
2) N을 소인수 분해하여 2와 5의 개수 구하기
3) 둘 중 작은 수에 따라 10 생성 가능 -> 일의 자리부터의 0의 개수 정해짐
#include <iostream>
#include <time.h>
using namespace std;
int main() {
int n;
cin>>n;
int count2=0,count5=0;
for(int i=2;i<=n;i++){ //2부터 N까지 반복 -> 팩토리얼
int temp=i;
while(temp%2==0){ //2로 나누어 떨어지는 개수
count2++;
temp/=2;
}
while(temp%5==0){ //5로 나누어 떨어지는 개수
count5++;
temp/=5;
}
}
cout<<min(count2,count5)<<endl;
return 0;
}