gpt4 book ai didi

c++ - 使用 C++ 的 Project Euler - 编译器不会在 100 x 101 后处理

转载 作者:行者123 更新时间:2023-11-28 01:09:17 25 4
gpt4 key购买 nike

我已经开始使用 C++ 并在 projecteuler.net 上摆弄一些问题。

我在回答问题 #4,这是我的代码:

判断数字是否为回文的算法:

bool forwardCheck(long posPal){
long n = posPal;
long rev = 0;
long dig;

while (posPal > 0){
dig = posPal % 10;
rev = rev * 10 + dig;
posPal = posPal % 10;
}

return n == rev;
}

主程序:

int main(){
long palindrome;

cout << "We are finding the largest palindrome made from two 3-digit numbers.\n"
<< "Calculating...\nCalculating...\nDone!\n";

for (long i = 100; i < 1000; i++){
for (long j = 100; j < 1000; j++){
long mult = i * j;
if (forwardCheck(mult)){
palindrome = mult;
//testing function above
cout << mult << " is a palindrome!\n";
} else
//testing function above
cout << mult << " is not a palindrome...\n";
}
}


cout << "The largest palindrome composed of two 3 digit numbers is: " << palindrome
<< endl;

return 0;
}

我在 OS X 上使用 X11 作为我的 g++ 编译器,我的问题是,使用上面的代码,数字达到 101,000 作为倍数,然后停止并停止。我的问题是:

为什么要这样做?我是在低效地处理这个问题吗?

我意识到另一种选择是从 long = 999 开始并向下迭代,但我已经编码但它在“完成!”之后卡住了。声明(是的,我知道在算法运行之前编写它有点雄心勃勃,但我喜欢乐观。:)

卡住和停顿是指 CPU 使用率激增,但没有任何内容写入控制台。

作为一般的旁注:

有没有一种方法可以通过控制台进行调试,即让它告诉我它在做什么,类似于 Windows 命令提示符中的 echo?我也是 OS X 的新手...

最佳答案

看看这段代码:

  while (posPal > 0){
dig = posPal % 10;
rev = rev * 10 + dig;
posPal = posPal % 10;
}

我认为你在循环底部误算了 posPal

尝试用 posPal = posPal/10 替换。

关于c++ - 使用 C++ 的 Project Euler - 编译器不会在 100 x 101 后处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4311808/

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