用js判断一个随机数是否为质数

首先要知道什么是质数,质数就是除了1和本身,不能被其他任何大于0的自然数整除的数。这里还有一点1和0 既不是质数也不是合数

1.初始版本。
实现思路:定义一个随机数,把它从1开始到他自身的所有数都除一遍,判断余数是否为0,在其中加入一个字数器变量,因为质数只能被1和本身整除,所有当这个计数器的值等于2的时候,这个数就肯定是质数。
实现代码:

   var conPr = 0; // 定义一个计数器变量
    function numPrime() {
        var num = prompt('请输入一个数');
        var count = 0;
        for (var i = 1; i <= parseInt(num); i++) {
            conPr++; //计数器
            if (parseInt(num) % i == 0) {
                count++;
            }
        }
        if (count === 2) {
            return num + '是质数';
        } else {
            return num + '是和数';
        }
    }
    console.log(numPrime());
    console.log(conPr)

在这里插入图片描述
这种方法虽然直观易懂,但当数字大了之后会多很多无谓的步骤,观察计数器conPr可以发现,当输入的值是多少,循环就会执行多少次。这样是很不利于程序的运行的,当输入的值比较大,还可能会存在卡机的风险。

2.优化版本。
实现思路:依然通过用随机数去除以除1跟自身外的其他数取余来判断,只是这里用了双重for循环,当循环到某一个可以被随机数整除的数的,这个时候直接返回结果,跳出循环。这样就会少执行很多次循环。有利于程序的运行。
实现代码:

var count = 0; // 计数器

        function numPrime1() {
             var num = prompt('请输入一个数');
             for (i = 2; i <= parseInt(num); i++) {
                 for (j = 2; j < parseInt(num); j++) {
                     count++;
                     if (num % j == 0) {
                         return num + '是和数'
                     }
                 }
                 return num + '是质数'
             }
             return '0和1既不是质数也不是和数'
         }
         alert(numPrime1());
         console.log(count); 

在这里插入图片描述
在这里插入图片描述
通过观察这里的计数器发现,这种方法是比上一种效率要高的多的。所以推荐这种写法。
(这里的计数器只是为了比较两种方法的最终循环次数,寻求最优解,跟方法本身没有什么关系的哈,是可有可无的。)

当然还有很多其他可以实现的方法,如果你有更好的方法,可以给我留言交流一下。
希望可以帮到你,觉得有用的话记得点个赞喔~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值