Int太大,不能对double和Int使用mod(%)

int too large, cannot use mod (%) for double and int

本文关键字:Int mod 使用 double 太大 不能      更新时间:2023-10-16

下面是我找到一个数字的素数因子的代码:

#include <iostream>
using namespace std;
int main()
{
    long int a, b, c, d = 0, f;
    int w = 0;
    f = 13195;
    for(a = 3; a < 100; a++)
    {
        w = f % a;
        if(w == 0)
        {
            for(b = 2; b < a; b++)
            {
                d = 0;
                c = a % b;
                if(c == 0)
                {
                    d++;
                    break;
                }
            }
            if(d == 0)
                cout << a << " is a primen";
        }
    }
    system("pause");
    return 0;
}

f为待校验的号码。我必须检查一个12位数,但我不能使用doublelong int,因为%不能同时作用于两者。我能做什么呢?

long long是一个更大的数据类型,可以处理64位(>12位)数字。

如果由于某种原因不允许使用另一个答案中提到的long long,您可以在双精度体上模拟%:

c = a - floor(a / b) * b;

如果ab小于2**52(4503599627370496),这应该可以工作