int太大,不能使用mod(%)表示double和int

时间:2013-01-19 01:40:48

标签: c++ types

这是我的代码,用于查找数字的素数因子:

#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 prime\n";
        }
    }

    system("pause");

    return 0;
}

f是要检查的号码。我必须检查一个12位数字,但我无法使用doublelong int,因为%无法同时对两者进行操作。我该怎么做呢?

2 个答案:

答案 0 :(得分:3)

long long是一种可以处理64位(> 12位)数字的较大数据类型。使用它应该有效。

答案 1 :(得分:0)

如果出于某种原因,您不允许使用另一个答案中提到的long long,则可以在双打中模拟%

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

如果ab小于2 ** 52(4503599627370496),这应该可行。