2016-11-23 42 views
1

我正在通過03級歐拉項目。 這是我的代碼,我仍然不明白爲什麼它不工作。 這是一個數學問題嗎? 有一個彙編,但結果是錯誤的。有一個數字的所有因素,而不僅僅是質數.. 有人可以看看嗎? 由於 BRC++ - 歐拉項目 - 03級

#include <iostream> 
    #include <string> 
    #include <vector> 
    #include <cmath> 
    #include <cstdint> 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
void facteursden(std::vector<uint64_t>& facteursden, uint64_t number) 
{ 

    uint64_t i = 2; 

    for (i = 1; i <= number; ++i) { 
     if (number % i == 0) { 
      facteursden.push_back(i); 
     } 
    } 
} 
////////////////////////////////////////////// 
uint64_t factprem(uint64_t n) 
{ 
    uint64_t i = 1; 

    for (i = 1; i*i < n; ++i) { 
    if (n % i != 0) 
return 1; } 
return 0; 
} 

/////////////////////////////////////////////////////////////////////////// 
int main() 
{ 

    std::vector<uint64_t> monTableau1; 
    facteursden(monTableau1, 49); 
uint64_t i = 0; 
for (i = 0; i < (uint64_t)monTableau1.size(); ++i) { 
if (factprem(monTableau1[i]) == 1) { 
std::cout << monTableau1[i] << std::endl; }} 

return 0 ; 
} 
+0

你甚至不會說你的代碼應該解決什麼問題。我的意思是,那歐拉3級關於什麼?另外,它有什麼問題?你有什麼錯誤嗎?哪個?請把它們包括在問題中。 – ForceBru

+0

對不起,這裏是歐拉問題:「13195的主要因素是5,7,13和29. 什麼是數字600851475143的最大素因?」我的問題其實是,我有所有因素,我的代碼不選擇素數。 – nolw38

+0

歐拉項目是爲了學習。這並不能真正幫助解決問題。你仍然可以提出一個關於你被困住的事情的具體問題。 – stefaanv

回答

0

有在

uint64_t factprem(uint64_t n) 

1.在兩個錯誤爲循環開始從

i=2 

代替I = 1

2.功能應看起來像這樣

uint64_t factprem(uint64_t n) 
{ 
uint64_t i = 1; 

for (i = 2; i*i <=n; ++i) { 
    if (n % i == 0) 
return 0; } 
return 1; 
} 
+0

它的作品!!!!!!!謝謝 !!!但爲什麼從i = 2開始如此重要? – nolw38

+0

在函數中它檢查我是否是n的除數,如果i = 1那麼我是n的除數(對於任何n,因爲1是每個數字的除數),並且它將顯示n不是素數,而是它。如果你知道它不要忘記標記爲答案。 – Sniper