형님들 제가 956331992007843552652604425031376690367 이 숫자를 소인수분해 해서 RSA암호를 풀어야 하거든요.
아래 소스를 구해서 돌렸더니, 29번 째 까지는 결과가 나오는데 그 이상 자릿수에서는 결과가 안 나옵니다.
정녕 방법이 없습니까?
#include<stdio.h>
void getPrime(int FirstInputNumber)
{
unsigned long long i,PrimeNumber,InputNumber;
unsigned long long Prime[50];
unsigned long long X;
PrimeNumber=0;
InputNumber=FirstInputNumber;
for(i=2;i<=InputNumber;i++)
{
if(InputNumber%i==0)
{
Prime[PrimeNumber]=i;
PrimeNumber++;
InputNumber=InputNumber/i;
i=1; // <- i++가 수행될테니 i=1로 해야합니다..
}
}
X=InputNumber; // <- 경우에 상관없이 InputNumber로 해야합니다..
i=0;
while(FirstInputNumber!=X)
{
printf("%d ",Prime[i]);
X=X*Prime[i];
i++;
}
printf("%d\n",InputNumber); // <- 처음의 루프가 끝나면 InputNumber도 원래 FirstInputNumber의 수인수일테니 이것도 출력해야죠..
}
int main()
{
// 1 2 3
//123456789012345678901234567890123456789
//unsigned long long wanted=956331992007843552652604425031376690367;
unsigned long long wanted=95633199200784355265260442503;
do{
getPrime(wanted);
printf("소인수분해하고 싶은 수를 입력하시오\n");
scanf("%d",&wanted);
if (wanted == 0) break;
}while(1);
}
7746289204980135457*123456789012345681631