# 常用算法

# __author: _nbloser
# date: 2018/2/4

import math
def is_prime(number):
num_sqrt = int(math.sqrt(number))
for i in range(2, num_sqrt + 1):
if number % num_sqrt == 0:
return False
return True

if __name__ == '__main__':
n = int(input('输入要判断的数：'))
print(is_prime(n))

# __author: _nbloser
# date: 2018/3/2

### 求a^m mod n  。 返回的d为答案，比如  2^3  mod 5 = 3 ,则返回3
def mod(a, m, n):
temp = m
c = 0
d = 1
k = len(bin(a).replace('0b', ''))
b = [0 for x in range(k)]  # 创建长度为k的数组/  a = [0]*10 后面这个快
for i in range(k):
if (0 == temp % 2):
b[i] = 0
else:
b[i] = 1
temp = temp / 2
for i in range(k-1):
c = c*2
d = (d*d) % n
if 1 == b[i]:
c = c+1
d = (d*a)%n
return d

"""这个算法是我在学密码学的时候要用到，开始是c语言，后面我用python比较好用，我就改成python版本了，c语言版本在下面
//求 a 的 m 次方模 n 算法
int mod(int a, int m , int n ){
int c = 0;
int d = 1;

//算 m 有多少二进制位，即求 k
int k = 1;
int temp = 2;
while(temp < m){
temp = temp * 2;
k++;
}

//把 m 放入数组 b[k]中
int b[k];
int i;
temp = m;
for( i = 0; i < k; i++ ){
if( 0 == temp%2){
b[i] = 0;
}
else{
b[i] = 1;
}
temp = temp/2;
}

for( i = k-1; i >= 0; i--){
c = c * 2;
d = (d*d) % n;
if( 1==b[i] ){
c = c + 1;
d = (d*a)%n;
}
}
return d;
}
"""

# __author: _nbloser
# date: 2018/3/3

def is_leapyear(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return True
else:
return False

##这个倒是很简单，记住就行了，/哈哈

posted @ 2018-03-14 23:26  Alos403  阅读(237)  评论(0编辑  收藏  举报