2017-10-28 43 views
-2

這是在項目歐拉的第三個問題返回0。 我懷疑它只返回0,因爲我在初始化時將0賦給了'returnum'變量。我的代碼在較小的數字中工作正常,但它不適用於獲取正確答案所需的大數目(600851475143)。功能檢查大素因子返回使用大量的c當++

這是爲int的長度?如果是的話,我應該使用哪種數據類型?

這裏是我的代碼:

int problem3(long int num) { 
    long int returnum; 
    for (int i = 2; i < num; ++i) { 
     if (num % i == 0 && primecheck(i)) { 
      returnum = i; 
     } 
    } 
    return returnum; 
} 

這是我的「primecheck」功能:

bool primecheck(long int num) { 
    for (int i = 2; i <= num/2; ++i) { 
     if (num % i == 0) { 
      return false; 
     } 
    } 
    return true; 
} 

編輯:我試圖改變數據類型,但是當我這樣做,只是沒有按」沒有迴應,幾分鐘後顯示一個空的控制檯,然後崩潰。

+0

使用'長long' –

+0

600851475143寫成二進制的有40位。 – molbdnilo

+0

@TemaniAfif這只是表明空白 – ZayyanAbbas

回答

0

爲int類型的變量的最大值爲2147483647,而浮動的最大值爲:3.40282e + 38或0x1.fffffep + 127。你也可以使用double。

+0

分解點的浮點數?這是沒有結束的好... – Quentin

0
long long problem3(long long num) { 
long long returnum; 
for (long long i = 2; i < num; ++i) { 
    if (num % i == 0 && primecheck(i)) { 
     returnum = i; 
    } 
} 
return returnum; 
} 

這是我的 'primecheck' 功能:

bool primecheck(long long num) { 
    for (long long i = 2; i <= num/2; ++i) { 
     if (num % i == 0) { 
      return false; 
     } 
    } 
    return true; 
} 

Fundamental Types (C++)

測試!好! VS2017

#include "stdafx.h" 
#include <stdio.h> 

bool primecheck(long long num); 
long long problem3(long long num); 

bool primecheck(long long num) { 
    for (long long i = 2; i <= num/2; ++i) { 
     if (num % i == 0) { 
      return false; 
     } 
    } 
    return true; 
} 

long long problem3(long long num) { 
    long long returnum; 
    for (long long i = 2; i < num; ++i) { 
     if (num % i == 0 && primecheck(i)) { 
      returnum = i; 
     } 
     if (i % 100000 == 0) { 
      printf("tick - %lld\n", i); 
     } 
    } 
    return returnum; 
} 


int main() 
{ 
    printf("out number %lld\n", problem3(600851475143)); 
    return 0; 
} 

32 037 210 000 - 截圖10 000 000每/秒。 (在這一刻>(長)2^32) ,你想用此程序是什麼?等待65K秒? (18小時) 可能需要使用數學算法獲得最佳時間?

+0

仍然無法正常工作。如果我改變數據類型,它在控制檯中只是空白。 – ZayyanAbbas

+0

即時通訊測試它。沒關係 – Akubik