2014-02-24 6 views
0

[질문 :프로젝트 오일러 C++ # 3

? "13195의 주요 요인은 5, 7, 13, 번호 600851475143의 가장 큰 주요 요인은 무엇 29

있다" 나는 그러나 내 출력을 무력을 사용하지 않고 그것을 해결하려고

#include<iostream.h> 
#include<conio.h> 
#include<math.h> 
void main() 
{ 
clrscr(); 
long double x=600851475143,n; 
for(n=2;;n++) 
    {redo:if(fmod(x,n) == 0) 
       { x=x/n; 
        goto redo; 
       } 
if(x == 1) 
    { 
    cout<<n 
    break; 
     } 
} 
getch(); 
} 

내가 결함을 찾을 수 없습니다 항상 688543. 입니다. 도와주세요. 감사합니다.

+9

그'for - goto/label' 사용법은 나를 울게 만들었습니다 – Michael

+1

들여 쓰기는 .... 창조적입니다. 더하기 존재하지 않는 헤더,'main'에 대한 잘못된 리턴 타입,'for' 플로우를 제어하는'goto', getch() .... 나는 계속할 수 있습니다. –

답변

1

여기 ++ (나는 그것의 의미를 변경하지 않은 경우) 실제 C로 변환 코드,이다 :

#include <iostream> 
#include <cmath> 

int main() 
{ 
    long double x = 600851475143; 
    long double n = 2; 

    while (x > 1) { 
     if (fmod(x,n) == 0) 
      x /= n; 
     else 
      n++; 
    } 

    std::cout << n << '\n'; 
} 

The result is: 6857

귀하의 알고리즘은 괜찮습니다. 컴파일러가 이거나 매우이거나 16 비트 시스템에서 작업 중이거나 우리에게 표시하지 않은 다른 실수를 저 지르 셨습니다.