형님들 제가 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);
}