gpt4 book ai didi

c++ - 费马大定理算法

转载 作者:可可西里 更新时间:2023-11-01 18:06:05 26 4
gpt4 key购买 nike

我正在服用 this费马大定理的定义。

我尝试编写一个算法来验证它是否适用于小值:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
//a^n + b^n = c^n

int a, b, c, n, count = 0;

for (n = 3; n < 1000; n++)
for (a = 1; a < 1000; a++)
for (b = 1; b < 100; b++)
for (c = 1; c < 1000; c++)
{
if (a != b && b != c && a != c)
{
if (pow(a,n) + pow(b,n) == pow(c,n))
{
cout << "\na: " << a << " b: " << b << " c: " << c << " n: " << n;
count++;
}
}
}

cout << count << " combinazioni";

}

这是一段输出的屏幕: Image

这怎么可能?我是否遗漏了 C++ 编程中可能会得到错误结果的“大整数”?

最佳答案

你的 pow() 函数溢出了;请记住 int 的大小是有限的。

例如,pow(256, 4) 在 32 位上会溢出,pow(256, 8) 在 64 位上会溢出,即使您使用无符号数据类型也是如此。

从技术上讲,int 溢出是未定义的行为,因此,任何事情 都可能发生,包括环绕(即回到 0)或鼻恶魔

unsigned int 根据标准,计算以 WIDTH 的幂为模 2;即总是环绕。

关于c++ - 费马大定理算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17065392/

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