gpt4 book ai didi

C++ - fmod 返回错误答案

转载 作者:行者123 更新时间:2023-11-28 00:42:22 26 4
gpt4 key购买 nike

首先,我正在为学校做这个项目,我们不允许使用外部库,因此我不能使用 GMP 之类的东西。问题是,我有一个函数需要一些“艰难”的计算。即,

m^e mod n

这是我的代码

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
int e = 17, n = 3233, m = 65;
long double p, mod;

p = pow(m, e); // Gives 6.59974e+30 which is correct

mod = fmodl(p, n);

cout<<mod; // Gives 887, When the correct answer is 2790

return 0;
}

如您所见,fmod (fmodl) 函数没有返回正确的值,是否有解决方法?同样,不使用任何外部库。

最佳答案

您可以编写自己的模幂函数。

int modpow(int a,int b,int mod)
{
int product,pseq;
product=1;
pseq=a%mod;
while(b>0)
{
if(b&1)
product=(product*pseq)%mod;
pseq=(pseq*pseq)%mod;
b>>=1
}
return product;
}

引用http://en.wikipedia.org/wiki/Modular_exponentiation解释

关于C++ - fmod 返回错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159142/

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