C++ int太大,不能对double和int使用mod(%)

C++ int太大,不能对double和int使用mod(%),c++,types,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

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

#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;
}
#包括
使用名称空间std;
int main()
{
长整数a,b,c,d=0,f;
int w=0;
f=13195;
对于(a=3;a<100;a++)
{
w=f%a;
如果(w==0)
{
对于(b=2;bcoutA
long
是一种更大的数据类型,可以处理64位(>12位)的数字。使用它应该可以。A
long
是一种更大的数据类型,可以处理64位(>12位)数字。使用该选项应该有效。

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

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

如果
a
b
小于约2**52(4503599627370496),这应该是可行的。

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

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

如果
a
b
小于约2**52(4503599627370496),这应该有效。

您需要检查sqrt(f)=114的系数,您需要检查sqrt(f)=114的系数