有没有给说说这是什么意思
稗覅赞日 2019-05-19 10:53:41 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
long long quicks(long long a, long long b, long long c)
{
long long ans = 1;
a = a%c;
while (b != 0)
{
if (b & 1) ans = (ans*a) % c;
b >>= 1;
a = (a*a) % c;
}
return ans;
}
bool Miller_Rabin_1(long long n)
{
long long t = 0;
long long b = n - 1;
while ((b & 1) == 0)
{
t++;
b >>= 1;
}
long long a = 11;
long long x = quicks(a, b, n);
for (long long i = 1; i <= t; i++)
{
long long y = quicks(x, 2, n);
if (y == 1 && x != 1 && x != n - 1) return false;
x = y;
}
if (x != 1) return false;
else return true;
}
int main()
{
int n;
cin >> n;
if (n == 1) return 0;
if (Miller_Rabin_1(n)) printf("素数\n");
else printf("合数\n");
return 0;
}