c – 确定平方根是否为整数

c – 确定平方根是否为整数,第1张

概述在我的程序中,我试图找到数字600851475143的最大素数因子.我已经制作了一个for循环,它确定了该数字的所有因子并将它们存储在向量数组中.我遇到的问题是我不知道如何确定因子是否可以是平方根并且给出整数而不是小数.到目前为止我的代码是: #include <iostream>#include <vector>#include <math.h>using namespace std; 在我的程序中,我试图找到数字600851475143的最大素数因子.我已经制作了一个for循环,它确定了该数字的所有因子并将它们存储在向量数组中.我遇到的问题是我不知道如何确定因子是否可以是平方根并且给出整数而不是小数.到目前为止我的代码是:

#include <iostream>#include <vector>#include <math.h>using namespace std;vector <int> factors;int main(){    double num = 600851475143;    for (int i=1; i<=num; i++)    {        if (fmod(num,i)==0)        {            factors.push_back(i);        }    }     for (int i=0; i<factors.size(); i++)     {         if (sqrt(factor[i]))                      // ???      }}

有人可以告诉我如何通过我的if语句确定一个数字是否可以平方根?

解决方法
int s = sqrt(factor[i]);if ((s * s) == factor[i])

正如霍布​​斯在评论中指出的那样,

Assuming that double is the usual 64-bit IEEE-754 double-precision float,for values less than 2^53 the difference between one double and the next representable double is less than or equal to 1. Above 2^53,the precision is worse than integer.

因此,如果您的int是32位,那么您是安全的.如果您必须处理大于2 ^ 53的数字,则可能会出现一些精度错误.

总结

以上是内存溢出为你收集整理的c – 确定平方根是否为整数全部内容,希望文章能够帮你解决c – 确定平方根是否为整数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1222000.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存