n이 입력(0 < k < n ≤ 2^31)되면 k를 빼서 제곱수를 만들 수 있는 k를 구하고, 그 제곱수에 루트를 씌운 수(제곱근) t를 구하여라
이 때 가장 작은 k를 출력한다.
IO example : 34 입력 → 출력 9 5
#include <stdio.h>
int main(){
int a;
scanf("%d",&a);
if(a==1) return 0;
for(int b=2;b<=a;b++){
if(a%b==0){
a=a/b;
printf("%d\\n",b);
b=1;
}
}
return 0;
}
입력되는 n의 값을 a에 int로 저장 하고, n의 값이 1이라면 아무것도 출력하지 않고 종료해야 하므로, if(a==1) return 0; 로 처리합니다.
2부터 시작하여 a 이하가 될 때까지 1씩 증가하면서 반복합니다. b는 a를 나눌 수 있는지 확인하는 데 사용됩니다.
if(a%b==0)는, 만약 a가 b로 나누어 떨어진다면, a=a/b;로 a를 b로 나눈 값을 a에 다시 저장합니다. 이는 a의 소인수를 하나 제거하는 효과가 있습니다.
printf("%d\n",b); 로 현재의 소인수 b를 출력하고, b=1;로 b를 1로 재설정합니다.
for문이 끝나면 프로그램을 종료합니다.