帮你精通JavaScript:费马小定理验证质数

帮你精通JavaScript:费马小定理验证质数

费马小定理应用“模除”验证是否为质数:

假如p是一个质数,a是一个小于p整数,那么:

帮你精通JavaScript:费马小定理验证质数

首先要构造“模除”函数如下:

function expmod(base, exp, m) {
    return exp === 0  ? 1
           : is_even(exp) ? square(expmod(base, exp / 2, m)) % m
           : (base * expmod(base, exp - 1, m)) % m;
}

function square(x) {
    return x * x;
}

function is_even(n) {
    return n % 2 === 0;
}

然后测试的随机数:

function random(n) {
    return Math.floor(Math.random() * n);
}

定义费马小定理:

function fermat_test(n) {
		let a = 1 + random(n - 1));
    return expmod(a, n, n) === a;
}

最后测试:

function fast_is_prime(n, times) {
    return times === 0 ? true
           : fermat_test(n) ? fast_is_prime(n, times - 1)
           : false;
}

验证结果如下:

帮你精通JavaScript:费马小定理验证质数

展开阅读全文

页面更新:2024-03-04

标签:质数   定理   随机数   整数   函数   定义   测试   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top