我这样写为啥不对呀 大佬们~

金沙官网线上 1金沙官网线上 2

金沙官网线上 3

快速取模指数算法

判断是否为质数,不能被2——根2整除的是质数,我这样写,输入任何数都显示不是质数,为什么呀#金沙官网线上,includestdio.h#includemath.hvoidmain(){intm,i=2;intflag=0;printf("请输入一个需要判断的正整数m:");scanf("%d",m);while(i=sqrt(m)){if("m%i==0"){flag=1;break;}i++;}if(flag=1)printf("该正整数m不是质数。");elseprintf("该正整数m是质数。");}

# __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;
} 
"""

金沙官网线上 4金沙官网线上 5

本文由金沙官网线上发布于编程,转载请注明出处:我这样写为啥不对呀 大佬们~

您可能还会对下面的文章感兴趣: