c ++ - 欧拉项目 - 第03级

时间:2016-11-23 14:14:32

标签: c++

我正在经历03级'欧拉项目。 这是我的代码,我仍然不明白为什么它不起作用。 这是一个数学问题吗? 有一个汇编,但结果是错误的。有许多因素,而不仅仅是素数...... 有人可以看看吗? 谢谢 BR

    #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 ;
}

1 个答案:

答案 0 :(得分:0)

中有两个错误
uint64_t factprem(uint64_t n)

1。在for循环中从

开始
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;
}