728x90
반응형
문제 : https://codeup.kr/problem.php?id=1284
문제 설명
두 소수의 곱을 암호로 사용하는 알고리즘은 큰 수의 소인수분해가 어렵기 때문에 안전하다고 알려져있다.
그렇지만, 만약 두 소수를 잊어버리면 어떻게 될까? 굉장히 난감할 것이다.
이에 대비해 어떤 수(n)가 입력되면 두 소수의 곱으로 나타낼 수 있으면 두 소수를 오름차순으로 출력하고,
그렇지 않으면 "wrong number"를 출력하는 프로그램을 작성하시오.
# include <stdio.h>
int print(int n)
{
int i = 1;
if (n == 1)
return 0;
else
{
for(i; i <= n; i++)
{
if (n % i == 0 && i != 1 && i != n)
{
return 0;
}
}
}
return 1;
}
int main()
{
int i,j,n;
scanf("%d",&n);
for(i = 1; i<=n/2; i++)
{
if(n%i == 0)
{
if(print(i) && print(n/i))
{
printf("%d %d",i,n/i);
return 0;
}
}
}
printf("wrong number");
return 0;
}
728x90
반응형
최근댓글