gpt4 book ai didi

Javascript 与 C++,相同的代码,不同的结果,这是为什么呢?

转载 作者:行者123 更新时间:2023-11-30 00:47:06 27 4
gpt4 key购买 nike

我正在做一个代码挑战,我发现我的代码有一些奇怪的东西,所以我用 C++ 运行它

function sumPrimes (num)
{
var sum=0;
for(var i=2; i<num; i++)
{
if(primeNumber(i)===true)
sum+=i;
}
return sum;
}


function primeNumber (i)
{
if(i==2 || i==3 || i==5 || i==7)
return true;
if(i%2!=0 && i%3!=0 && i%5!=0 && i%7!=0)
return true;
}

sumPrimes(977);

这给了我 107812 的结果,但是当我用 C++ 做同样的事情时

#include <iostream>
using namespace std;
bool primeNumber(int);
int sumPrimes(int);
int main()
{
int n;
cout << "n: ";
cin >> n;
cout << "Sum : " << sumPrimes(n) << endl;
system("PAUSE>=0");
}
int sumPrimes(int n)
{
int sum = 0;
for (int i = 2; i < n; i++)
{
if (primeNumber(i) == true)
sum += i;
}
return sum;
}
bool primeNumber(int i)
{
if (i == 2 || i == 3 || i == 5 || i == 7)
return true;
if (i % 2 != 0 && i % 3 != 0 && i % 5 != 0 && i % 7 != 0)
return true;
}

结果是 108583。

谁能解释一下这是怎么回事?

最佳答案

这两个程序都存在两个主要问题。

  • 如果不满足条件,您永远不会显式返回 false!

这些编程语言无法读懂你的心思,所以他们不明白如果满足一个条件你不返回true,你也想返回false满足的条件。

如果在执行函数时未返回某些内容,您的 JS 代码将返回 undefined

您的 C++ 代码实际上调用了未定义行为 (UB),因为执行到了一个没有返回值的非 void 函数的末尾。

不幸的是,这些都不能保证 false。一个简单的(也许是幼稚的?)解决方案是在 curl 结束之前插入一个 return false;

  • 您的算法不正确!

由于您正在努力提高自己的技能,我将把这个作为练习,但我建议您多考虑一下质数的定义。 :)

关于Javascript 与 C++,相同的代码,不同的结果,这是为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35829676/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com