728x90
반응형

문제 : https://codeup.kr/problem.php?id=1284

 

암호 해독

어떤 수 n이 입력된다.(단, 1<=n<=10,000,000)

codeup.kr

문제 설명

두 소수의 곱을 암호로 사용하는 알고리즘은 큰 수의 소인수분해가 어렵기 때문에 안전하다고 알려져있다.

그렇지만, 만약 두 소수를 잊어버리면 어떻게 될까? 굉장히 난감할 것이다.

이에 대비해 어떤 수(n)가 입력되면 두 소수의 곱으로 나타낼 수 있으면 두 소수를 오름차순으로 출력하고,

그렇지 않으면 "wrong number"를 출력하는 프로그램을 작성하시오.

 

[그림1] 입 출력 형식 및 예제

 

# 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
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기