📄 test.cpp
字号:
#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include<math.h>
#include"hugeint.h"
typedef hugeint Hugeint;
bool IsHusu (Hugeint a,Hugeint b);
bool IsPrime(Hugeint p);
Hugeint X_PmodN(Hugeint X,Hugeint P,Hugeint N);
//int Legendre(a,p);
bool IsPrime(Hugeint p)
{
bool b_prime=true;
/* srand(time(NULL));
for(int k=0;k<100;k++)
{
bool b_done=true;
while(b_done)
{
int a=rand();
b_prime=IsHusu(p,a);
if(b_prime==false)
{
k=100;
break;
}
int j=X_PmodN(a,(p-1)/2,p)
if(j!=jacobi(a,p))
{
b_prime=false;
k=100;
break;
}
b_done=false;
}
}*/
cout<<"ok";
Hugeint k=sqrt(p)+1;
Hugeint i=0;
for(i=0;i<=k;i=i+1)
{
if(p%i==0)
{
b_prime=false;
break;
}
}
return b_prime;
}
Hugeint X_PmodN(Hugeint x,Hugeint p,Hugeint n)
{
Hugeint c=1,b=p,a=x,bb=0;
while(0<b)
{
cout<<"b=="<<hugeint(b)<<endl;
while((b%2)==0)
{
b=b/2;
a=(a*a)%n;
}
b=b-1;
c=(c*a)%n;
}
return c;
}
Hugeint FaiN(Hugeint n)
{
Hugeint c=1;
// if(IsPrime(N))
// return c=N-1;
// else
{
for(Hugeint i=2;i<n;i=i+1)
{//cout<<"i=="<<(hugeint)i<<endl;
if(IsHusu(i,n))
{ //cout<<"IsHusu(i,n)"<<endl;
c=c+1;
}
}
}
return c;
}
bool IsHusu (Hugeint a,Hugeint b)
{ bool husu=true;
Hugeint Rem(0);
while( 0<b )
{
Rem = a% b;
a = b;
b=Rem;
}
if(b==1) husu=false;
return husu;
}
int gcd (int x, int y, int *a1, int *a2, int *b1, int *b2)
{
int q, r, a, b;
q = x / y;
r = x % y;
a = *a2 - q*(*a1);
b = *b2 - q*(*b1);
if (0 == r)
{
return y;
}
*a2 = *a1;
*b2 = *b1;
*a1 = a;
*b1 = b;
return gcd (y, r, a1, a2, b1, b2);
}
void main()
{
// Hugeint t=X_PmodN(9726,3533,11413);
// cout<<"X_PmodN(9726,3533,11413)=="<<(hugeint)t<<endl;
//hugeint aa="11413";
// cout<<(hugeint)FaiN(aa);
// int x=0;
//cin>>x;
//if(IsPrime(11)) cout<<1;
//hugeint a(-1000000),b("-100000000000"),c(0);
hugeint x1(0),x2(-2),x3(4),x4,x5,x6(9);
x4=x3+x2;
x5=2;
//bool bb=(a<=b);
///bb=true;
//cout<<(x2<x3);
//cout<<"x4=="<<x4<<endl;
//cout<<(-2<=x2);
//cout<<(x5-(x6/x2)*x2);
//cout<<x6/2;
cout<<x6/x5<<endl;
//cout<<(x6/2)*x5;
cout<<x6%x5;
//cout<<(x6-((x6/x5)*2));
//cout<<(x5==2);
//cout<<3;
/* int x=11;
int y=2;
int a1 = 0;
int a2 = 1;
int b1 = 1;
int b2 = 0;
int r = gcd (x, y, &a1, &a2, &b1, &b2);
printf ("%d = (%d) * (%d) + (%d) * (%d)\n",
r, a1, x, b1, y);
*/
return ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -