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

news2025/1/30 16:11:11

今年开年以来,随着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>

运行的效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java版oj】day25星际密码、数根

目录 一、洗牌 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 二、数根 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 一、洗牌 &#xff08;1&…

过度的焦虑 到底有多糟

你们知道过度的焦虑到底有多糟糕吗&#xff1f; 现在生活节奏越来越快&#xff0c;不管是生活、工作还是学习&#xff0c;很多方面都给我们带来了很多的压力问题&#xff0c;我们所承受的负担越来越重&#xff0c;很多人时常处于一种非常疲劳、过度的焦虑的状态。 你们知道过度…

什么是Node.js

文章目录什么是Node.js简介常用命令Node内置模块Node.js和JavaScript的区别什么是Node.js 简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境。它允许开发者使用JavaScript编写服务器端代码&#xff0c;而不仅仅是浏览器端的代码。Node.js的出现使得JavaScript可以在…

Vue环境下安装Less|Sass|Stylus(详细指南)

Vue_Cli环境下如何使用less、sass、stylus&#xff1f;报错如何解决&#xff1f; 安装Less 依次使用以下npm执行命令即可完后less的安装 npm install lessnpm install less-loader在vue组件style中使用less <style lang"less"></style>安装Sass(三者之…

如何抓住ChatGPT的热潮,打造小红书爆款

如何抓住ChatGPT的热潮&#xff0c;打造小红书爆款 前两周我看到一个小红书才申请了没多久就已经有好几万的粉丝&#xff0c;于是我让我老婆也赶紧注册一个&#xff0c;毕竟小红书也有着不错的用户群体 那么我们如何通过GPT辅助我们快速创作呢&#xff1f;先来看下ChatGPT的回答…

《离散数学导学》精炼——第6,7章(类型集合论,谓词逻辑)

引言 笔者一直觉得在计算机这一学科的学习中&#xff0c;离散数学是极为重要的知识基础。离散化的思想体现在计算机学科的方方面面。举例来说&#xff0c;“像素”这一概念是我们日常生活中耳熟能详的&#xff0c;将一个图片拆分成一个个极微小的像素&#xff0c;就是利用了离…

[1] 顺序表实现

一、引入顺序表 提出问题&#xff1a; 顺序表底层是一个数组&#xff0c;为什么不是直接操作数组就好了&#xff0c;还要单独写一个类&#xff0c;说底层是数组呢&#xff1f;&#xff1f; 因为顺序表可以有更多的操作&#xff1a; 比如一个数组&#xff0c;我们没有办法知…

Android 11.0 原生SystemUI下拉通知栏UI背景设置为圆角背景的定制(二)

1.前言 在11.0的系统rom定制化开发中,在原生系统SystemUI下拉状态栏的下拉通知栏的背景默认是白色四角的背景, 由于在产品设计中,在对下拉通知栏通知的背景需要把四角背景默认改成圆角背景,所以就需要分析系统原生下拉通知栏的每条通知的默认背景, 然后通过systemui的通知…

MobTech 秒验|极速验证,拉新无忧

一、运营拓展新用户的难题 运营拓展新用户是每个应用都需要面对的问题&#xff0c;但是在实际操作中&#xff0c;往往会遇到一些困难。其中一个主要的难题就是注册和登录的繁琐性。用户在使用一个新的应用时&#xff0c;通常需要填写手机号、获取验证码、输入验证码等步骤&…

Java-红黑树的实现

目录一、概述二、红黑树的操作1. 变色2. 左旋与右旋3. 插入节点4. 删除节点三、手写代码1. 通用方法2. 中序遍历3. 左旋4. 右旋5. 添加节点6. 删除节点四、完整代码五、测试1. 红黑树打印类2. 测试代码3. 测试结果一、概述 关于红黑树的学习&#xff0c;先推荐给大家一个网址&…

Centos7安装部署Jenkins

Jenkins简介&#xff1a; Jenkins只是一个平台&#xff0c;真正运作的都是插件。这就是jenkins流行的原因&#xff0c;因为jenkins什么插件都有 Hudson是Jenkins的前身&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控程序重复的工作&#xff0c;Hudson后来被…

文章自动生成器 -原创文章生成器在线版

怎么将ChatGPT生成文章保存 在使用ChatGPT生成文章后&#xff0c;您可以使用以下几种方法将其保存起来&#xff1a; 复制粘贴&#xff1a;最简单的方法是将生成的文章文本复制并粘贴到文本编辑器或其他文本处理软件中&#xff0c;如Word文档或Google Docs&#xff0c;以保存文…

I2C通信

一、理论上了解I2C时序 I2C写数据时序如图&#xff1a; 通过解析器解析I2C通信如上图&#xff08;SCL和SDA反了&#xff09;。 1---起始信号 2、3---应答信号ACK 5---停止信号 起始信号&#xff1a;SCL线是高电平时&#xff0c;SDA线从高电平向低电平切换。 停…

一个大二学生送给大一学弟学妹的建议

博主简介&#xff1a;先简单的介绍一下我吧&#xff0c;本人是一名大二学生&#xff0c;来自四川。目前所学专业是人工智能&#xff0c;致力于在CSDN平台分享自己的学习内容。 我为什么要写这篇文章&#xff1f; 我来到CSDN也已经一年了&#xff0c;在这一年里面&#xff0c;我…

go binary包

binary包使用与详解 最近在看一个第三方包的库源码&#xff0c;bigcache&#xff0c;发现其中用到了binary 里面的函数&#xff0c;所以准备研究一下。 可以看到binary 包位于encoding/binary&#xff0c;也就是表示这个包的作用是编辑码作用的&#xff0c;看到文档给出的解释…

加密的本质:数学的不对称性

文章目录 引言I 预备知识1.1 加密和授权1.2 非对称的特性II 椭圆曲线加密的方法2.1 椭圆曲线2.2 椭圆曲线的性质引言 不对称有时却自有其妙处与美感,比如黄金分割就是不对称的。 可以通过加密和授权,兼顾保护信息不外泄,而且某些得到授权的人还能使用信息。 I 预备知识 …

2022年人民满意手机银行发展洞察

易观&#xff1a;商业银行积极践行“金融为民”&#xff0c;坚持“以用户为中心”的发展理念&#xff0c;从全客群、全服务、全渠道推动金融服务触达广大人民群众。其中&#xff0c;手机银行作为服务及经营主阵地&#xff0c;是人民群众获取金融服务的超级入口及服务平台。 “以…

键盘摄影:今天老李是一名动物摄影师

键摄&#xff0c;全称键盘摄影师。原本是一个贬义词&#xff0c;是指那些没有相机&#xff0c;没有实拍经验&#xff0c;仅凭一副鼠标键盘&#xff0c;在家里打字&#xff0c;在网上头头是道地分享摄影技巧&#xff0c;同时对别人的作品指指点点&#xff0c;然后又无法秀出自己…

中国上海人工智能企业中集飞瞳全球港航AI独角兽企业,成熟智慧港航AI产品,数字化港口自动化码头智慧港航智能化中国上海人工智能企业

中国上海人工智能企业中集飞瞳全球港航AI独角兽企业&#xff0c;成熟智慧港航AI产品&#xff0c;数字化港口自动化码头智慧港航。CIMCAI打造全球领先新一代集装箱管理方案&#xff0c;手机小程序随时随地AI验箱&#xff0c;自动化箱况检测信息识别&#xff0c;集装箱信息识别箱…

总线的控制

总线控制 目录总线控制总线的判优控制链式查询计数器定时查询独立请求小结总线通信控制同步通信异步通信半同步通信分离通信由于总线上连接着多个部件&#xff0c;什么时候由哪个部件发送信息&#xff0c;如何给传送信息定时&#xff0c;如何防止信息丢失&#xff0c;如何避免多…