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;bcoutAlong
是一种更大的数据类型,可以处理64位(>12位)的数字。使用它应该可以。Along
是一种更大的数据类型,可以处理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的系数