gpt4 book ai didi

c++ - 如何检查一个数字是否无理数

转载 作者:行者123 更新时间:2023-12-02 02:11:42 25 4
gpt4 key购买 nike

如何检查数字是否无理数?我们输入一个无理数并仅使用标准 std 库。

最佳答案

全部floating-point numbers可以用 x = significand × 2<sup>exponent</sup> 的形式表示,其中significandexponent是整数。根据定义,所有这些数字都是有理数。这就是为什么这个问题只有一个近似解。

一种可能的方法是将数字扩展为连分数。如果遇到非常小的分母或零,则输入数字近似有理数。或者,更好的是,如果所有分母都不小,那么该数字近似无理数。

粗略的想法:

bool is_rational(double x) {
x = std::abs(x);
for (int i = 0; i < 20; ++i) {
const auto a = std::floor(x);
if (x - a < 1e-8)
return true;
x = 1 / (x - a);
}
return false;
}

int main() {
std::cout << std::boolalpha;
std::cout << is_rational(2019. / 9102.) << std::endl; // Output: true
std::cout << is_rational(std::sqrt(2)) << std::endl; // Output: false
}

人们应该考虑 is_rational() 中魔数(Magic Number)的最佳选择。 .

关于c++ - 如何检查一个数字是否无理数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58973526/

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