首页 > 其他分享 >你的订婚|结婚纪念日是质数吗?进来测算看看……

你的订婚|结婚纪念日是质数吗?进来测算看看……

时间:2023-04-11 11:03:44浏览次数:41  
标签:判断 纪念日 质数 输入框 length 订婚 var 输入

今年开年以来,随着ChatGPT的爆火,原本一直平静的三六零安全科技股份有限公司(下称360)股价仅2月以来涨幅就达到近200%。然而4月4日晚间,360发布公告称,公司董事长周鸿祎与妻子胡欢离婚。有意思的是,2020年5月20日,周鸿祎在其抖音账号发布的“结婚纪念日”视频里表示,挑选结婚纪念日要用质数,因为质数的特性是不可分解。

那么你的订婚|结婚纪念日是质数吗?我们可以自己写代码测试一下。

首先得弄明白什么是质数。

质数(Prime number,又称素数),指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。

按照这个定义,我们对自然数n可以写出如下判断代码:

//判断是否为质数
	//n:numbder
	function isPrimeNumbers(n)
	{
		var b = false;
		if (n > 1) 
		{
			for (var i = 2; i < n; i++) 
			{
				if (n % i == 0) 
				{
					b = false;
					break;
				}
			} //for

			if (i==n)
			{
				b = true;
			}
		} //if
		return b;
	}//  isPrimeNumbers(n)

埃拉托斯特尼(Eratosthenes)筛法等优化算法这里我们先不考虑_

我们希望被检测的自然数由用户输入,所以需要提供一个输入框,并对对用户在输入框输入的内容进行检测。

首先要判断用户是否输入了内容,我们可以通过输入框内容的长度来判断。

如果输入框内容的长度 > 0,说明用户输入了内容,我们需要过滤掉输入内容中的所有空格:

if (n.length > 0)
		{
			n = n.replace(/\s*/g,"");//去除所有空格
		}

如果输内容的长度为0,也就是说用户没有输入内容,或者用户懒得输入数字,那么我们可以产生一个随机整数来进行检测。代码为:

if (n.length==0)
		{
			oInp.value = n = Math.floor(Math.random() * 100);//使用随机数
		}

接下来要判断用户输入或产生的随机数是否为正整数,这里可以用正则表达式来判断:

//判断是否为正整数
	//n:numbder
	function isPositiveInteger(n)
	{
		var reg=/^[1-9]\d*$/;
		return reg.test(n);
	}// isNaturalNumber(n)

如果用户输入或产生的随机数是正整数,那么我们就进行质数的判断并给出判断结果,否则提示用户输入大于1的正整数:

var s =  isPositiveInteger(n) ?  n + '<span style="color:red">' + (isPrimeNumbers(n) ? '是' : '不是' ) + '</span>质数。'
							          :  '请输入一个大于1的整数。';

从方便用户使用的角度考虑,我们还增加了两项功能:

一是提供了一个checkbox来让用户决定是否保留之前的判断结果:

if (ckbKeepResult.checked)
		{
			s += oResult.innerHTML;//保留之前的判断结果
		}
		oResult.innerHTML = s;

二是提供了一个checkbox来让用户决定是否在判断完成后自动清除输入框的内容:

if (ckbAutoClear.checked)
		{
			oInp.value = '';//清空输入框
		}

完整的代码如下:

<!DOCTYPE html>
<html>
<head>
	<meta name="Author" content="PurpleEndurer">
	<title>质数判断</title>
</head>
<body>
<body>
	<fieldset>
		<!-- 表单字段集 -->
	        <legend>
			质数判断
	        </legend>
		<p>
			质数(Prime number,又称素数),指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。@Edge浏览器 by PurpleEndurer
		</p>
		</p>			
			请输入一个大于1的整数(不输入则使用随机自然数):<input type="text" id="number"> 
			<button id="btn">判断</button>
			<input id="ckbAutoClear" type="checkbox" checked="true">判断后自动清除输入框</input>
			 <input id="ckbKeepResult" type="checkbox" checked="true">保留判断结果</input>
		</p>
		<div style="overflow:auto; width:100%; height:200px;">结果:<div id="divResult"></div></div>
	</fieldset>
	<div id="divDbg" style="width:100%; height: 400px; border:green 1px solid; color:green; overflow:auto;">调试信息:</div>
	<script>
		var oInp = document.getElementById("number");
		var oBtn = document.getElementById("btn");
		var oResult = document.getElementById("divResult");
		var divDbg = document.getElementById("divDbg");
		var ckbAutoClear = document.getElementById("ckbAutoClear");
  		var ckbKeepResult = document.getElementById("ckbKeepResult");
 
		function isInteger(n) 
		{
			return  parseInt(n, 10) === n;//Math.floor(n) === n;//typeof(n) === 'number' && n%1 === 0;
		}
 
 
		//判断是否为自然数(非负整数)
		//n:numbder
		function isNaturalNumber(n)
		{
			var reg=/^[0-9]+?$/;
			return reg.test(n);
		}// isNaturalNumber(n)
 
		//判断是否为正整数
		//n:numbder
		function isPositiveInteger(n)
		{
			var reg=/^[1-9]\d*$/;
			return reg.test(n);
		}// isNaturalNumber(n)
 
		//判断是否为质数
		//n:numbder
		function isPrimeNumbers(n)
		{
			var b = false;
			if (n >1) 
			{
				for (var i = 2; i < n; i++) 
				{
					if (n % i == 0) 
					{
						b = false;
						break;
					}
				} //for
 
				if (i==n)
				{
					b = true;
				}
			} //if
			return b;
		}//  isPrimeNumbers(n)
 
 
		oBtn.onclick = function() 
		{
			var n = oInp.value;
 
			divDbg.innerHTML += '<p>n=['+ n + '] typeof(n)=' + typeof(n) + ' n.length=' + n.length + '</p>';
 
			if (n.length > 0)
			{
				n = n.replace(/\s*/g,"");//去除所有空格
			}
 
			divDbg.innerHTML += '<p>n=['+ n + '] typeof(n)=' + typeof(n) + ' n.length=' + n.length + '</p>';
 
			if (n.length==0)
			{
				oInp.value = n = Math.floor(Math.random() * 100);//使用随机数
			}
 
			divDbg.innerHTML += '<p>isPositiveInteger(' + n + ')=' +  isPositiveInteger(n) + '</p>';
 
			var s =  isPositiveInteger(n) ? n + '<span style="color:red">' + (isPrimeNumbers(n) ? '是' : '不是' ) + '</span>质数。'
         						     	  : '请输入一个大于1的整数。';
			if (ckbKeepResult.checked)
			{
				s += oResult.innerHTML;//保留之前的判断结果
			}
			oResult.innerHTML = s;
 
			if (ckbAutoClear.checked)
			{
				oInp.value = '';//清空输入框
			}
    } //oBtn.onclick
    </script>
 
</body>
</html>

运行的效果如下:

你的订婚|结婚纪念日是质数吗?进来测算看看……_JavaScript

标签:判断,纪念日,质数,输入框,length,订婚,var,输入
From: https://blog.51cto.com/endurer/6178170

相关文章

  • 6361.对角线上的质数-340
    对角线上的质数给你一个下标从0开始的二维整数数组nums。返回位于nums至少一条对角线上的最大质数。如果任一对角线上均不存在质数,返回0。注意:如果某个整数大于1,且不存在除1和自身之外的正整数因子,则认为该整数是一个质数。如果存在整数i,使得 nums[i][i]......
  • 质数和分解
    #include<iostream>#include<string.h>usingnamespacestd;constintN=210;intm;intf[N][N];intprimes[N];intcnt=1;boolst[N];voidinit(){for(inti=2;i<=200;i++){if(!st[i])primes[cnt++]=i;for(intj=1;......
  • 质数筛
    内容来自b站importjava.util.Arrays;importjava.util.Scanner;publicclass质数筛{ staticintN=100000010; staticboolean[]vis=newboolean[N];//划掉合数 staticint[]prim=newint[N];//记录质数 staticintcnt=0;//质数个数 publicstat......
  • [安乐椅#15] 杨辉三角质数分布性质
    性质内容在杨辉三角中,质数仅存在于第2层。性质证明\(C_n^m\)\frac{0}12345670|1|2|3|4|5|6|7|......
  • 洛谷P1217 [USACO1.5]回文质数 Prime Palindromes
    #include<bits/stdc++.h>usingnamespacestd;inta,b;boolzs(intx){if(x%2>0){for(inti=3;i<x;i+=2)if(x%i==0)returnfalse;returntrue;}elsereturnfalse;}boolhws(intx......
  • 3792. 质数问题(质数筛)
    https://www.acwing.com/problem/content/3795题目要求一个数是质数且这个数能被两个相邻质数+1之和得到并且满足这样的条件还要大于k次主要难点就是读题意读懂题意后......
  • 数论基础1(质数判断,分解质因数,筛法,优化筛法,约数,约数个数,约数之和)
    模板://质数判定--试除法//朴素O(N)boolis_prime(intn){ if(n<2)returnfalse; for(inti=2;i<n;i++) { if(n%i==0)returnfalse; } returntrue;}//......
  • 6.质数路径
    原题:https://www.acwing.com/problem/content/description/4223/#include<iostream>#include<cstring>#include<queue>usingnamespacestd;constintN=10010;int......
  • 输入一个数找大于它最小质数!!!
    importjava.util.Scanner;publicclassText2{publicstaticvoidmain(String[]args){Scannerx=newScanner(System.in);inta=x.next......
  • 筛选质数
     这一题的思想是这样,1,2,3,4,5,6,7,8,9,10.遍历数组,先把i的倍数全部删掉,因为如果是谁的倍数那么肯定就不是质数,把所有的倍数都删掉以后,剩下的就是质数了。比如,1肯定不是质数了,2的......