#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int JudgeDigit(long num);
unsigned int Montgmery( int num, long index, long mod)//蒙哥马利快速幂算法 (num^index)%mod
{
int tmp = 1;//保存奇数是剩下的那个数
num %= mod; // 假设(2^7)%3 2%3
while (index > 1)
{
if (index & 1) //按位与 ,除最低位不变其他位置0 ,如果为1 说明是奇数,否则偶数
{
tmp = (tmp*num) % mod;// 假设(2^7)%3 第一次为 1%3=1 (1%3)(2%3)%3=2%3 第二次 为((2%3)*(4%3))%3=8%3
}
num = (num*num) % mod;//(2%3)(2%3)%3=4%3 (4%3)(4%3)%3=16%3
index /= 2;
}
int result = (num*tmp) % mod; //(16%3)(8%3)%3=(2^7)%3
return result;
}
int IsPrime( long num)//判断num是否是质数 ,如何是返回1,不是返回-1;
{
if (num < 2)
{
return -1;
}
static int PrimeList[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41,
43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97
};//质数表
const int count &#
质数因子
最新推荐文章于 2023-10-17 16:55:42 发布