当前位置:首页 » 编程软件 » js脚本输出0100所有素数

js脚本输出0100所有素数

发布时间: 2022-08-06 03:51:45

Ⅰ 用javascript编写:在页面中显示1~100之间的所有素数,并且控制每行显示5个素数。

原理:
如果i可以整除2到i/2的数,它就不是素数;如果全部都不能整除,它就是素数。
因为i肯定不能整除i/2到i之间的数,所以不用计算,减少运算的时间。

我把本功能分了2个函数来写,一个用来计算素数,一个用来显示结果。这样如果显示的时候需要更改格式,不需要改计算素数的函数,重用性比较好

//调用函数显示结果,把0到100间的素数显示在id为result的div中
printArray(sushu(0,100),'result');
//显示数组的函数,以空格为间隔显示数组的值,每行显示5个。调用时第一个值arr写需要显示的数组第二个值area写数组显示的位置的ID
function printArray(arr,area){
var str='';
for(var i=0;i<arr.length;i++){
if(i>0 && i%5==0) str=str+"<br />";
str=str+arr[i]+'& nbsp;';//& nbsp;请去掉&后的空格,可以换成其他的间隔符号
}
document.getElementById(area).innerHTML=str;
}
//计算素数用的函数,使用时输入start和end,计算start到end之间的素数
function sushu(start,end){
if(start<0 ||start>end) return "error";
if(start<2) start=2;
var flag=false;
var strResult=new Array();
for(var i=start;i<end;i++){
for(var j=2;j<(i/2);j++){
if(i%j==0) flag=true;
}
if(!flag) strResult.push(i);
else flag=false;
}
return strResult;
}

html中写<div id="result"></div>

Ⅱ 用JavaScript,求1到100内所有的质数,(质数就是素数),不用函数方法,用循环和brea

一:十万一下的 呵呵算法一:
测试 10 万以下的质数: 程序代码
// 获得 0 到 limit 之间的素数
// author: dron
function getPrimeNumbers(limit){
var result = [2];
var is;
if(limit < 2)
return [];
for(var i = 3, s; i <= limit; i += 2){
is = true;
s = Math.sqrt(i);
for(var j = 0, r, l = result.length; j <= l; j ++){
r = result[j];
if(r > s)
break;
if(i % r)
continue;
is = false;
break;
}
is && result.push(i);
}
return result;
}算法二: 程序代码
var stopwatch = new Date(); // 计时器, 初始化.
var MaxNum = 100000; // 查找 2到MaxNum 这范围内的素数 ( MaxNum 要>= 2 ).
var i, j; // 计数器.
var count = 1; // 初始化素数的个数, 因为我们从2开始计, 所以初始化为 1.
var PrimeTemp = []; // 在这个数组做记号, 做了记号的, 全不是素数.
var PrimeArys = [2]; // 贮存素数的 数组. 因为 MaxNum >= 2, 所以第一个数组元素的值为 2 .
var oNum = Math.ceil( Math.sqrt( MaxNum ) ); // 为什么用 开方? 看到下面2个 for 没.
// 把不是素数的做 "记号".
for(i=3; i<oNum; i+=2) // +=2 ??? 我们整个程序都不用双数, 全用单数, 这样就快2倍了.
if( PrimeTemp[i]==null ) // 初始化 PrimeTemp 的数组, 数组里面当然什么都没有.
for(j=i; i*j<=MaxNum; j+=2) // i 的 j 倍一定不是素数, 但我们要 i*j 来看看是否超过了 MaxNum
PrimeTemp[ i*j ] = 0; // 初始化 PrimeTemp 里的元素, 现在来帮它们做一个 "记号". 因为这个元素"不是"素数.
// 输出素数了.
for(i=3; i<=MaxNum; i+=2) // +=2 ,不要忘记, 我们不用双数的.
if( PrimeTemp[i]==null ) // 如果是 true , 这就表明 这个没有被做 "记号" , 所以它是 素数.
PrimeArys[ count++ ] = i; // 是 素数 的话, 就存入 PrimeArys 数组.
document.write( PrimeArys.join(" ") , "<br><br>从2到"+MaxNum+"共有素数 "+count+" 个。"); // 用 join()提高输出效率
var t=new Date()-stopwatch;
alert("本次运行了 "+t+" 毫秒。"); //看看 程序运行了多久.二:简单点的<script>
function look(num){
time=new Date();
a=new Array(2,3,5,7,11,13,17,19,23,29,31,37)
for(x=41;x<num;x+=2)
{
if(aa3(x))a[a.length]=x
}
time=new Date()-time;
document.write(a.toString().replace(/\,/g,"<br>"))
alert("共"+a.length+"个,用时"+time+"毫秒")
}function aa3(n)
{
if(n%3==0)return false
if(n%5==0)return false
var b=a.length
for(var y=3;y<b;y++){if(n%a[y]==0)return false}
return true
}</script>
<input id=aa value=10000><input type=button value=计算 onclick=look(aa.value)>

Ⅲ 如何用javascript编写出出1到100的素数

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
}

Ⅳ 使用javascript编写程序,显示100以内的素数

.mainTB td
{
text-align:right;
width:50px;
}

function generate() {
var tb = document.getElementById("tb");
var row;
var cell;
var n = 0;//当前列下标
var count;//整除数量
for (var i = 1; i < 101; i++) {
count = 0;
for (var j = 1; j <= i; j++) {//运算
if (i % j == 0) {
count++;
if (count > 2) {
break;
}
}
}
if (count == 2) { //判断质数
if (n == 0) { //新行
row = tb.insertRow(tb.rows.length);
}
cell = row.insertCell(n);
cell.innerHTML = i;
if (++n == 6) { //跳列
n = 0;
}
}
}
}

<input type="button" value="计算" onclick="generate()"/>
<table id="tb" class="mainTB">
</table>

Ⅳ 用JavaScript 在网页上编程输出0~100之间的所有素数,并要求每行显示5个素数

<script>
document.write('<table><tr>');
var num=0;
for(var i=2,flag;i<=100;i++){
flag=false;
for(var j=2;j<i;j++){
if(i%j===0){
flag=true;
break;
}
}
if(!flag){
if(num!=0&&num%5==0){
document.write('</tr><tr>')
}
num++;
document.write('<td>'+i+'</td>');
}
}
document.write('</table>');
</script>

Ⅵ 用javascript编程输出100-1000的所有素数,并要求每行显示六个素数。

varbrNum=六;//换行
varstartNum=一百;//初始值
varendNum=一千;//结束值
window.onload=function(){
endNum+=1;
varstr="";
varn=0;//当前列下标
varcount;//整除数量
for(vari=startNum;i<endNum;i++){
count=0;
for(varj=1;j<=i;j++){
if(i%j==0){
count++;
if(count>2){//被两数以上所整除
break;
}
}
}
if(count==2){//判断质数
if(n==0){//新行
str+="<br/>";
}
str+=i+"";
if(++n==brNum){//满列跳行
n=0;
}
}
}
document.getElementById("showDiv").innerHTML=str;
}
<divid="showDiv"></div>

未防止被抽,麻烦将开头的初始化变量,改成数值。

备注:在“//新行” 下面

str += "br"; //左边这里有个br换行标签,被过滤了。

Ⅶ 用JavaScript语言编程实现判断100以内的素数

以下代码可以实现JavaScript求n个素数,当n=500时满足题目需求。
functionprime(n){
varprimeArr=[2];
varisPrime=function(num,primeList){
if(num==2){
returntrue;
}
for(vari=3,iLen=Math.sqrt(num),j=1;i<=iLen;i=primeList[j++]){
if(num%i==0){
returnfalse;
}
}
returntrue;
}
if(isNaN(n)||n<1){
return[];
}
for(vari=3,i<n;i+=2){
if(isPrime(i,primeArr)){
primeArr.push(i);

}
}
returnprimeArr;
}
prime(100)

//函数调用
prime(100);//计算100以内的素数:
素数即除去1和其本身两个数之外,不能被任何数整除的整数。
由公理可知,如果一个整数能被分解成多个整数,则必有一个数不大于该整数的平方根(反证法可知,如果分解成的两个数都大于平方根,则乘积必大于原数),故在循环时,只需循环到该数的平方根即(Math.sqrt(num)为求平方根)
如果一个数能被2整除,则除2之外其他数都不是素数,故从3开始遍历能够减少循环次数
如果一个数能够被分解,则最终分解结果必然为多个素数之积,故循环时只需要尝试之前算好的素数能否整除当前的数,极大减少循环次数

Ⅷ javascript 输出100-1000之间的素数

首先你的源码有几个粗心大意的地方,第一:script标签有开始没结束,js代码应该在<script type="text/javascript">这里是js代码</script>,你没有结束标签,其次,变量n赋值的时候你写的是o,应该是0.接下来说语法吧,可能你是需要格式要求还是怎么回事,如果单输出素数的话,那个n纯粹是多余的,下面我附上修改后的代码,运行正常。

<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<title>无标题文档</title>
</head>

<body>
<pre>
<scripttype="text/javascript">
vari,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>

运行截图:

热点内容
dosphp 发布:2025-02-08 21:01:27 浏览:702
sm3杂凑算法 发布:2025-02-08 20:55:00 浏览:285
抽奖源码带后台 发布:2025-02-08 20:33:54 浏览:225
欧博中央空调原始密码是多少 发布:2025-02-08 20:33:47 浏览:335
运动使人快乐缓解压力 发布:2025-02-08 20:27:01 浏览:98
linux命令大文件 发布:2025-02-08 20:25:06 浏览:897
C蚁群算法 发布:2025-02-08 20:21:25 浏览:513
私人搭建服务器能干嘛 发布:2025-02-08 20:21:24 浏览:596
网吧怎么通过服务器玩网络游戏 发布:2025-02-08 19:59:52 浏览:915
文档编辑加密 发布:2025-02-08 19:56:31 浏览:395