代码如下:
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了肃南裕固族自治免费建站欢迎大家使用!
!DOCTYPE html
html
head
meta charset="utf-8" /
meta http-equiv="X-UA-Compatible" content="IE=edge"
titledemo1/title
meta name="viewport" content="width=device-width, initial-scale=1"
script type="text/javascript"
function test() {
var n = parseInt(document.getElementById("number").value);
if (!n || n 2) {
alert('请输入一个大于1的数字。');
return;
}
if (isPrime(n)) {
document.getElementById("result").innerText = n +'是一个质数。';
} else {
document.getElementById("result").innerText = n +'不是一个质数。';
}
}
// 判断 number 是否是一个质数
function isPrime(number) {
if (number = 1) {
return false;
}
for (var i = 2; i number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
/script
/head
body
h2判断一个数是否为质数/h2
input id="number" type="text" /button onclick="test()"测试/button
br /
div id="result"/div
/body
/html
运行结果:
for(let i=1;i=100;i++){
if(check(i)) {
console.log(i)
}
}
// 判断当前给定的数 num 是否为素数, 是素数返回 true, 否则返回 false
function check(num){
if(num === 1) {
// 1 不是素数也不是合数, 返回 false
return false
} else {
// 声明变量用于统计从1~根号下 num,之间 能被 num 整除的数的个数
let count = 0;
for(let i=1; i=Math.sqrt(num); i++) {
if(num%i === 0) {
count++
// 当发现在1~根号下 num 之间有超过1个数可以被 num 整除, 说明 num 一定不是素数,直接返回false, 后面的数不用判断了
if(count 1) {
return false
}
}
}
// 因为素数只能被1和自身整除,
// 那么从1~根号下 num 之间一定只有一个数(1)可以被 num 整除, 所以当 count 等于1时, 这个num 就是素数
return count == 1
}
return false
}
var arr = [];
for(var i = 2; i 100; i++){
var yes = true;
for(var j = 2; j = i / 2; j++){
if(i % j == 0){
yes = false;
break;
}
}
if(yes){
arr.push(i);
}
}
console.log(arr);
以下代码可以实现JavaScript求n个素数,当n=500时满足题目需求。
function prime(n){
var primeArr = [2];
var isPrime = function(num, primeList){
if(num == 2){
return true;
}
for(var i = 3, iLen = Math.sqrt(num), j = 1; i = iLen; i = primeList[j++]){
if(num % i == 0){
return false;
}
}
return true;
}
if(isNaN(n) || n 1){
return [];
}
for(var i = 3, i n; i += 2){
if(isPrime(i, primeArr)){
primeArr.push(i);
}
}
return primeArr;
}
prime(100)
//函数调用
prime(100);//计算100以内的素数:
素数即除去1和其本身两个数之外,不能被任何数整除的整数。
由公理可知,如果一个整数能被分解成多个整数,则必有一个数不大于该整数的平方根(反证法可知,如果分解成的两个数都大于平方根,则乘积必大于原数),故在循环时,只需循环到该数的平方根即(Math.sqrt(num)为求平方根)
如果一个数能被2整除,则除2之外其他数都不是素数,故从3开始遍历能够减少循环次数
如果一个数能够被分解,则最终分解结果必然为多个素数之积,故循环时只需要尝试之前算好的素数能否整除当前的数,极大减少循环次数
var a=n;//n为输入所测的数值
var b=1;//这里不懂,下面关于b是做什么的都不明白
if(a==0||a==1){
document.write("0或1不是素数");
}else{
for(var i=2;ia;i++){
if(a%i==0){//没有余数,能整除
b=0; //这就是一个标记,记录a有被某个数整除了
break;
}
}
if(b){
document.write(a+"是素数");
}else{
document.write(a+"不是素数");
}
}
首先你的源码有几个粗心大意的地方,第一:script标签有开始没结束,js代码应该在script type="text/javascript"这里是js代码/script,你没有结束标签,其次,变量n赋值的时候你写的是o,应该是0.接下来说语法吧,可能你是需要格式要求还是怎么回事,如果单输出素数的话,那个n纯粹是多余的,下面我附上修改后的代码,运行正常。
html xmlns=""
head
meta http-equiv="Content-Type" content="text/html; charset=gb2312" /
title无标题文档/title
/head
body
pre
script type="text/javascript"
var i,j,m;
for (i=100;i=1000;i++)
{
for(m=1,j=2;j i;j++)
if(i%j==0)
{
m=0;break;
}
if(m==1)
{
document.writeln(i);
}
}
/script
/body
/html
运行截图: