精华内容
下载资源
问答
  • 质数又被称为素数,是指一个大于1的自然数,除了1和它自身外,不能被其它自然数整除 for循环(懂的都懂)就单纯蹭个积分 嘿嘿 :)
  • 判断一个数是不是素数的算法据我了解目前只能试除,也就是将这个除以从2到其本身减1,看余数有没有0。如果没有,就是素数。不过,根据搜索得知,可以不用除到其本身减1,只需要除到它开方之后的那个整数即可。...

    67095766abc89b6327d4d45337411537.png

    继续作学习笔记!

    素数也就是质数,它的特点就是只能被1和自己整除。判断一个数是不是素数的算法据我了解目前只能试除,也就是将这个数除以从2到其本身减1,看余数有没有0。如果没有,就是素数。不过,根据搜索得知,可以不用除到其本身减1,只需要除到它开方之后的那个整数即可。

    function 

    上面函数中的Math.sqrt 是 Javascript 的内置函数,用于开方;parseInt 也是内置函数,用来取开方之后的整数值。

    其实,还有很多判断方法一眼就可以看出某个数是不是素数,比如所有的偶数都不可能是素数,末尾是5的也不可能是素数等等。

    根据这个函数,我们也可以很容易的筛选出某个数字范围之内的素数,比如筛选出50以内的素数:

    var 
    展开全文
  • 主要介绍了JavaScript判断数字是否为质数的方法汇总的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
  • 一、判断一个数是不是质数(素数)质数又称素数一个大于 1 的自然数,除了 1 和它自身外,不能被其他自然数整除的叫做质数;否则称为合数。0 和 1 既不是质数也不是合数,最小的质数是 2function 优化: 假如 n 是...

    b707eef2ffff5204e9c76acdcd61b11c.png

    一、判断一个数是不是质数(素数)

    • 质数又称素数。一个大于 1 的自然数,除了 1 和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
    • 0 和 1 既不是质数也不是合数,最小的质数是 2
    function 

    优化: 假如 n 是合数,必然存在非 1 的两个约数 p1 和 p2,其中 p1<=sqrt(n),p2>=sqrt(n)。由此我们可以改进上述方法优化循环次数。

    function 

    二、斐波那契数列

    • 描述: 斐波那契数,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。
    • 斐波那契数列:1、1、2、3、5、8、13、21、34、……

    递归写法

    function 

    循环

    function 

    三、求最大公约数

    方法 1:使用循环

    function 

    方法 2:使用递归

    function 

    四、判断数组中是否有两数之和

    • 在一个未排序的数组中找出是否有任意两数之和等于给定的数。
    • 这题很简单,不要想得太复杂

    使用数组的 indexOf 方法

    function 

    五、用正则实现 trim() 清除字符串两端空格

    function 

    六、宣讲会安排

    • 一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。 给你每一个项目开始的时间和结束的时间(数组,里面是一个个具体的项目),你来安排宣讲的日程,要求会议室进行 的宣讲的场次最多。返回这个最多的宣讲场次。
    • 步骤:

    1. 先按照会议的 end 时间升序排序;
    2. 排除了因为正在进行会议而无法进行的会议(now > arr[i].start)
    3. 会议能举行,则 res++,并且更新目前时间 now (now = arr[i].end;)。

    function 

    七、水仙花数

    • 所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如 153 是“水仙花数”,因为:153 = 13 + 53 + 33。
    • 根据“水仙花数”的定义,判断一个数是否为“水仙花数”,最重要的是要把给出的三位数的个位、十位、百位分别拆分,并求其立方和(设为 s),若 s 与给出的三位数相等, 三位数为“水仙花数”,反之,则不是。
    function 

    八、计算闰年

    • 条件一是能够被 4 整除、但是不能被 100 整除;
    • 条件二是能够被 400 整除。满足两个条件中的一个即能判断是闰年。
    function 

    九、1,2,3,4 四个数字,能组合成多少种互不相同且没有重复的三位数

    function 

    十、猴子吃桃问题

    • 猴子吃桃子问题:猴子第一天摘下 N 个桃子,当时就吃了一半,还不过瘾,就又吃了一个。
    • 第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。
    • 到第 10 天在想吃的时候就剩一个桃子了。求第一天共摘下来多少个桃子?
    function 

    欢迎大佬指正

    展开全文
  • -- wikipediaMemoization 的原理就是把函数的每次执行结果都放入一个对象中,在接下来的执行中,在对象中查找是否已经有相应执行过的值,如果有,直接返回该值,没有才真正执行函数体的求值部分。在对象里找值是要...

    153b4cb119f6e435062d2260bb6735e7.png

    前言

    在计算机领域,记忆(memoization)是主要用于加速程序计算的一种优化技术,它使得函数避免重复演算之前已被处理过的输入,而返回已缓存的结果。 -- wikipedia

    Memoization 的原理就是把函数的每次执行结果都放入一个对象中,在接下来的执行中,在对象中查找是否已经有相应执行过的值,如果有,直接返回该值,没有才真正执行函数体的求值部分。在对象里找值是要比执行函数的速度要快的。

    另外,Memoization 只适用于确定性算法,对于相同的输入总是生成相同的输出,即纯函数。

    一、简单实现

    通过 Memoization 的定义和原理,我们就可以初步实现 Memoization 了。

    let memoize = function(func) {
      let cache = {};
      return function(key) {
        if (!cache[key])
          cache[key] = func.apply(this, arguments);
        return cache[key];
      }
    }
    

    是不是很简单~ 函数记忆其实就是利用闭包,将函数参数作为存储对象的键(key),函数结果作为存储对象的 value 值。

    二、underscore 实现

    underscore 的源码中有 Memoization 方法的封装,它支持传入一个 hasher 用来计算缓存对象 key 的计算方式。

    _.memoize = function(func, hasher) {
      var memoize = function(key) {
        // 把存储对象的引用拿出来,便于后面代码使用
        var cache = memoize.cache;
    ​
        // hasher 是计算 key 值的方法函数。
        // 如果传入了 hasher,则用 hasher 函数来计算 key
        // 否则用 参数 key(即 memoize 方法传入的第一个参数)当 key
        var address = '' + (hasher ? hasher.apply(this, arguments) : key);
    ​
        // 如果 key 还没有对应的 hash 值(意味着没有缓存值,没有计算过该输入)
        // 就执行回调函数,并缓存结果值
        if (!_.has(cache, address))
          cache[address] = func.apply(this, arguments);
    ​
        // 从缓存对象中取结果值
        return cache[address];
      };
    ​
      // cache 对象被当做 key-value 键值对缓存中间运算结果
      memoize.cache = {};
    ​
      // 返回 momoize 函数, 由于返回函数内部引用了 memoize.cache, 构成了闭包,变量保存在了内存中。
      return memoize;
    };
    

    三、应用 - 判断素数

    质数为在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数。

    我们通过判断素数的函数,看看使用了函数记忆后的效果。

    function isPrime(value) {
      console.log("isPrime 被执行了!");
      var prime = value != 1; // 1 不是素数,其他数字默认是素数。
      for (var i = 2; i < value; i++) {
        if (value % i == 0) {
          prime = false;
          break;
        }
      }
      return prime
    }
    ​
    let momoizedIsPrime = memoize(isPrime);
    ​
    momoizedIsPrime(5) // isPrime 被执行了!
    momoizedIsPrime(5) // 第二次执行,没有打印日志!
    

    四、应用 - 计算斐波那契数列

    斐波那契数列的特点是后一个数等于前面两个数的和
    指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2

    计算斐波那契数列是用来演示函数记忆很好的例子,因为计算斐波那契数列函数里面用了大量的递归。

    var count = 0;
    var fibonacci = function(n) {
      count++;
      return n < 2 ? n : fibonacci(n - 2) + fibonacci(n - 1);
    }
    ​
    for(var i = 0; i<= 10; i++) {
        console.log(`i: ${i}, ` + fibonacci(i));
    }
    ​
    // i: 0, 0
    // i: 1, 1
    // i: 2, 1
    // i: 3, 2
    // i: 4, 3
    // i: 5, 5
    // i: 6, 8
    // i: 7, 13
    // i: 8, 21
    // i: 9, 34
    // i: 10, 55
    ​
    console.log(count);  // 453 !!!
    

    我们可以看出,如果从 0 开始打印斐波那契数列,fibonacci 函数被执行了 453 次。那我们就牺牲一小部分内存,用来缓存每次计算的值。

    fibonacci = memoize(fibonacci);
    ​
    for(var i = 0; i<= 10; i++) {
        console.log(`i: ${i}, ` + fibonacci(i));
    }
    console.log(count); // 12
    

    通过 memoize 函数记忆,使得函数执行次数只需要 12 次,大大优化了函数执行计算的性能消耗,

    总结

    函数记忆(memoization)将函数的参数和结果值,保存在对象当中,用一部分的内存开销来提高程序计算的性能,常用在递归和重复运算较多的场景。

    欢迎关注我的个人公众号“谢南波”,专注分享原创文章。

    8f66768b175d08c6d62ae0a4e4b35ed3.png
    展开全文
  • 这个面试的时候 还是有可能问道的童鞋呢,了解了解听好了 ...1.我们先来第一版的判断素数的条件 function isSu(num){ if(num==1){ alert(‘你数学是体育老师教的吗?给我传过来一个1’); return false

    这个面试的时候 还是有可能问道的童鞋呢,了解了解听好了
    这个也是初中数学中的知识
    首先哈 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;
    }
    

    关注我持续更新前端知识

    展开全文
  • javascript判断一个数是否素数(质数)

    万次阅读 多人点赞 2018-08-01 21:38:21
    //用户输入一个数,判断这个数是否素数 //方案一 : 因子一定有两个 var num = number(prompt(&amp;amp;amp;quot;请输入一个正整数,判断次数是不是素数&amp;amp;amp;quot;)); var count = 0;//统计因子...
  • // 判断一个数是否素数(又叫质数,只能被1和自身整除的数) function isPrime(num) { var isPrime = true; for (var i = 2; i < num; i++) { if (num % i === 0) { isPrime = false; break; } } ...
  • JavaScript判断一个数是否为质数/素数

    千次阅读 2020-03-14 19:00:38
    JavaScript判断一个数是否为质数/素数 所谓素数,又称为素数,即自然数中只能被1和它本身整除的数。反之,除了1和它本身外还能被其他数整数的数称之合数。特别说明的是0和1既不是质数也不是合数。 这里将介绍...
  • JS判断一个数是否为质数素数

    千次阅读 2019-11-20 23:44:53
    <!... <... <head> ...meta charset="utf-8" />...质数判断</title> <script type="text/javascript"> //质数:只能被1和其本身整除的,从2开始 //方法:用这数字和...
  • * 判断是否质数 * @param 要判断的数字 * @return boolean true表示是质数、false表示不是质数 */ function isPrime(num) { // 循环 从2开始到num-1 for (var i = 2; i <= num - 1; i++) { // 判断 i ...
  • 判断一个数是否为素数质数):只能被1和其本身整除的数。  方案一:只有两个因子 (计算因子的个数是否是2,如果是2,是素数)  方案二:因子之和 == 该数 + 1  方案三:通过一个开关控制该数是否素数 ...
  • 只要判断除去1和其本身,还有没有因数即可
  • js 判断一个数是否为质数

    千次阅读 2020-09-05 17:05:32
    一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的叫做质数。例如:7只能被1和7整除,除此之外不能再被其他数字整除,7就是质数。 题: 将输入的数字除以所有较小的数字,如该数字能被自身和1整除,则...
  • // 用户输入数字 并弹出返回值 //素数:只能被1和自身整除的数字,例如2 3 5 7 11 //0和1既不是素数也不是... num = prompt("输入一个数:"); if (num == 1 || num == 0) return "no"; for (var i = 2; i <= ...
  • 质数一个大于1的,除了1和本身外,不能被其他自然数整除的,所以我们只需要获取到2到num之间的,再进行求余数,若余数0,则一定不是质数,相反,我们只用默认输入的就是质数,然后用if设置不是质数的情况...
  • js函数判断一个数是否为素数

    千次阅读 2018-01-11 17:54:33
    //判断一个数是否素数 function zhishu (n) { var zhishu = true;//假设是质数 for(var i = 2;i if(n % i === 0) { //除尽了说明不是素数 zhishu = false; } } //返回值 布尔值 ...
  • 判断是否为素数质数(prime number)又称素数,有无限质数定义在大于1的自然数中,除了1和它本身以外不再有其他因数的称为质数。 合数,数学用语,英文名Composite number,指自然数中除了能被1和本身...
  • JavaScript判断一个数是否素数

    千次阅读 2018-08-14 20:00:27
    JavaScript判断一个数是否素数 素数是什么?素数,除了1和它本身其它数都不整除。 这里我们用反证法来解决这个问题,那么什么是反证法? 反证法: 1.假设某个结论成立; 2.尝试找出反例,推翻假设 第...
  • 五年级上册数学公式小结第一单元:小数的乘法一个因数乘另一个...例如:3.65×6.72=24.528第二单元:小数的除法一个数(零除外)除以小于一的,商比被除大。一个数(零除外)除以大于一的,商比被除小。例如:30...
  • 题目:判断一个数是否素数 代码如下: functionsu(n){ for(vari=2;i<n;i++){ if(n%i==0){ //代码走到这里面证明不是素数 returnfalse //如果不是素数就直接返回false } } //如果整个循环执行完毕,...
  • 规律:把这个除以它之前的每一个数(从2开始) 只要找到一个整除(余数0) 就是非素数 法1: var num = 14; for (var i = 2; i < num; i++) { if (num % i == 0) {//表示有数可以整除 document.write(num + "是...
  • //找出max以内的所有质数 function prime(max) { max = Math.floor(max) ... // 定义一个数组来存放所有的质数 let primeArr = []; // 如果传入的max1 那么将1 添加到数组 if (max == 1) { primeArr.push(1);
  • 小学三年级学会万以内加减法,长度单位和质量单位,倍数的认知,多位,时间量及单位。长方形和正方形几何图形、分数的初步认识。小学四年级亿万的认识、面积单位(公顷和平方千米)、角的度量,两位的...
  • 素数的概念:只能被 1 和 其本身 整除的 <script> function getNumber()... var num = parseInt(prompt('请输入你需要判断是否为素数的正整数:')); var count = 0; // 统计因子个数 for (var i = 1; i &...
  • /*** @author 薛定谔的猫* java判断一个数是不是素数** 素数又称质数,是指在一个大于1的自然数中,除了1和本身之外,不能被其他自然数整除的*/public class PrimeNumber {public static void main(String[] args)...
  • 判断一个整数m是否素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。 具体代码如下: 运行结果图: 先随便输入一个数字,比如8: 所以8不是素...
  • i++){ // 判断num能否被i整除,如果能整除,则不是质数 if(num%i==0){ // 进入此判断则说明该不是质数 // 如果不是质数则设flagfalse,则不是进入后面if的判断 flag=false; } } if(flag){ alert(num+'是质数'); ...
  • <script> // 1. 用户输入任意两数字的任意计算,并能弹出运算后的结果(简单的计算器小功能) function arr(sum1, sum2) { return [sum1 + sum2, sum1 - sum2, sum1 * sum2, sum1 /... 用户输入任意两个数.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,264
精华内容 2,105
关键字:

判断一个数是否为素数js