0

我今天遇到了一个有趣的问题。作为我熟练掌握 Objective-c 的练习的一部分,当我坐在数学课上时,我为板上完成的每个问题编写程序,以期提高我的数学和编程能力。

然而,今天我遇到了一个问题。其中一个问题类似于“找到 10564245(<-- 示例数)可被整除的最大素数”

所以,我进去制作了这个程序。我已经完成了要检查值的循环,然后开始编写它检查提醒的部分,如果它是 0,它会记录它,如果不是,它会跳过它。

但是,由于数字太大而不能成为int,所以它必须是double。当我尝试插入数字时,当我想将%运算符与双精度一起使用时,程序给了我错误。如果你有一个非常大的数字,有什么方法可以找到余数?

谢谢

错误:Invalid operands to binary expression

编辑:解决了!

我从每个答案中取了一点。我们有 fmod 功能,但我最终使用long而不是int,我不知道为什么我最初没有想到

4

2 回答 2

5

使用 fmod()。

#include <stdio.h>
#include <math.h>

int main(int argc, char *argv[]) {
    double a = 77879878978942312315687897;
    double b = 10;
    printf("%.f",fmod(a, b));
}
于 2012-04-20T15:17:40.597 回答
1

双精度值对于整数值并不精确,因此可能不应该用于此类事情。相反,您可以使用 long into 甚至 long long int 来进行计算

于 2012-04-20T15:22:40.427 回答