js,javascript中判断一个数是否是素数

这个面试的时候 还是有可能问道的童鞋呢,了解了解听好了
这个也是初中数学中的知识
首先哈 1 不是素数也不是什么 那个叫什么 素数的相反叫什么 我也忘了
我记得好像叫做合数 好像是的

好久搞过数学了,这可不行快忘完了 哎哎 闲着没事要去 复习复习 初中数学了
素数是 除了一和它本身之外没有其他的 约数的 数是素数
1.我们先来第一版的判断素数的条件

function isSu(num){
	if(num==1){
		alert(‘你数学是体育老师教的吗?给我传过来一个1);
		return false;
	}
	if(num==2||num==3){
		return true;   // 3 和 2 确实是 素数哈
	}
}
  1. 这样先完成了 基础的条件判断 往下接着走 首先 能被2整除的一定不是 素数了
    这下可以继续添加条件了
function isSu(num){
	if(num==1){
		alert(‘你数学是体育老师教的吗?给我传过来一个1);
		return false;
	}
	if(num==2||num==3){
		return true;   // 3 和 2 确实是 素数哈
	}
	if(num%2==0){
		return false;
	}
}
  1. 然后停下来继续走 好像这样 虽然把大于2 的偶数 排除掉了 但是很多奇数 也不是素数哈 比如 15 21 35 81 等等
    这样 我们可以进行判断了 首先看能被 3整除吗 因为3是最小的质数了
    能被其他素数整除的一定不是 素数了 如果不能被 3 整除的话 就 看能被 5 整除吗 依次类推
    然后 我们就又得到了一个判断条件了
function isSu(num){
	if(num==1){
		alert(‘你数学是体育老师教的吗?给我传过来一个1);
		return false;
	}
	if(num==2||num==3){
		return true;   // 3 和 2 确实是 素数哈
	}
	if(num%2==0){
		return false;
	}
	var floor=3;
	while(num>floor){
		if(num%floor==0){
			return false;
		}else{
			floor+=2;
		}
	}
	return true;
}

这样 我们测试了 几个 11 17 29 好像都可以了
这样 终于可以完工了 这个时候大佬过来了 小赵你在干什么呢
我在做判断一个数是不是素数 看看我写的如何
大佬看完之后 ,说 你考虑得挺全面的 不过还能再次优化一下
首先一个数字是不是一定能被它的平方根 整除!!!!!!

那么你的循环条件 num >floor 是不是范围太大了 浪费时间
其实没有一个floor 加到 那个数字的 平方根哪里的

我们举一个例子 首先把这个数字 不是偶数 因为偶数已经被你上面的 整除2给排除
就拿 25 来说把 25的平方根是 5

所以 3+2 =5 这个时候 循环条件就应该中止了
但是你的循环条件 确实让人家 加到 25再停止 是不是浪费的时间 加大了好几倍
你这个时间复杂度 应该是 n*n了

听了大佬的话 我醍醐灌顶啊
这样第四版的判断就来了

function isSu(num){
	if(num==1){
		alert(‘你数学是体育老师教的吗?给我传过来一个1);
		return false;
	}
	if(num==2||num==3){
		return true;   // 3 和 2 确实是 素数哈
	}
	if(num%2==0){
		return false;
	}
	var floor=3,sqr=Math.sqrt(num);
	while(sqr>=floor){
		if(num%floor==0){
			return false;
		}else{
			floor+=2;
		}
	}
	return true;
}

关注我持续更新前端知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yunchong_zhao

帮到你了,请作者喝杯矿泉水可好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值