INT는

2013-01-19 2 views
0

여기 수의 소인수를 찾아 내 코드의 두 배를위한 모드 (%)를 사용하고 int로 할 수 없습니다INT는

#include <iostream> 
using namespace std; 

int main() 
{ 
    long int a, b, c, d = 0, f; 
    int w = 0; 

    f = 13195; 

    for(a = 3; a < 100; a++) 
    { 
     w = f % a; 

     if(w == 0) 
     { 
      for(b = 2; b < a; b++) 
      { 
       d = 0; 
       c = a % b; 
       if(c == 0) 
       { 
        d++; 
        break; 
       } 
      } 

      if(d == 0) 
       cout << a << " is a prime\n"; 
     } 
    } 

    system("pause"); 

    return 0; 
} 

f 체크 할 수있다. 12 자리 숫자를 확인해야하지만 doublelong int을 사용할 수 없습니다. %은 함께 작동 할 수 없습니다. 대신 무엇을 할 수 있습니까?

+0

sqrt (f) = 114 –

답변

3

long long은 64 비트 (> 12 자리) 숫자를 처리 할 수있는 더 큰 데이터 형식입니다. 그것을 사용하면 효과가 있습니다. 어떤 이유로 다른 답변에서 언급 한 바와 같이 long long를 사용할 수없는 경우

0

, 당신은 두 배에 %을 시뮬레이션 할 수 있습니다 :

c = a - floor(a/b) * b; 

a 경우와 b 약 2 ** 52 (4503599627370496 미만)이 작동합니다.

+0

thankx에 대한 요인을 확인해야합니다. –