JavaScript练习题11-20

2021/4/25 20:55:18

本文主要是介绍JavaScript练习题11-20,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

JavaScript练习题11-20

  • 11.声明函数factorial(n),参数n为自然数,函数返回n的阶乘。注意0!=1。注意不要在控制台输出任何内容。
  • 声明函数prime(n),参数n为自然数,当n为素数时,函数返回true,否则返回false。注意不要在控制台输出任何内容。
  • 13.声明函数f(n),参数n为自然数,函数返回n以内的素数个数。注意不要在控制台输出任何内容。
  • 14.如果n和n+2都是素数,则称n和n+2是一对姐妹素数。声明函数f(n),参数n为自然数,函数返回n以内的姐妹素数的对数。注意不要在控制台输出任何内容。
  • 15.一个素数,如果从最低位开始每次去掉一位数字,得到的都是素数,则该数称为超级素数。声明函数superPrime(n),参数n为自然数,如果n是超级素数,则函数返回true,否则返回false。注意不要在控制台输出任何内容。
  • 16.一个素数,如果从最低位开始每次去掉一位数字,得到的都是素数,则该数称为超级素数。声明函数f(n),参数n为自然数,函数返回n以内的超级素数的个数。注意不要在控制台输出任何内容。
  • 17.超级素数的另一种概念:如果2位数素数去掉高位数字后是1位数素数,则该数是超级素数;m(m>1)位超级素数去掉最高位后是m-1位超级素数。声明函数superPrime(n),参数n为自然数,如果n是超级素数,则函数返回true,否则返回false。注意不要在控制台输出任何内容。
  • 18.超级素数的另一种概念:如果2位数素数去掉高位数字后是1位数素数,则该数是超级素数;m(m>1)位超级素数去掉最高位后是m-1位超级素数。声明函数f(n),参数n为自然数,函数返回n以内的超级素数的个数。注意不要在控制台输出任何内容。
  • 19.汉诺塔问题:n个金盘按由大到小的顺序叠放在1号塔台上,现要将其移动到3号塔台上,每次只能移动一个金盘,可以借助2号塔台,每个塔台都必须保持由大到小的叠放次序。声明函数f(n,m),n为金盘数,m为最少移动步数方案中的第m步,返回第m步从哪个塔台取金盘。注意不要在控制台输出任何内容。
  • 20.声明函数f(a,b),如果b是数组a的元素,则返回第一个b的下标,否则返回-1。

11.声明函数factorial(n),参数n为自然数,函数返回n的阶乘。注意0!=1。注意不要在控制台输出任何内容。

function factorial(  n)
{
	if(n==0)
	{
		return 1
	}
    else{
		return n*factorial(n-1)
	}
}

声明函数prime(n),参数n为自然数,当n为素数时,函数返回true,否则返回false。注意不要在控制台输出任何内容。

function prime(n){
	if(n == 0 || n == 1) return false;
	else{
		for(let i = 2; i <= Math.sqrt(n); i++){
			if(n % i == 0){
				return false;
			}	
		}
		return true;
	}
}

13.声明函数f(n),参数n为自然数,函数返回n以内的素数个数。注意不要在控制台输出任何内容。

function f(n){
	var a=0;
 for(;n>=2;n--) 
 {
	 for(i=2;i<=n-1;i++) 
	 if(n%i==0)break;
		if(i>=n) {
		 a++; 
		 
		 }
 }return a;
}

14.如果n和n+2都是素数,则称n和n+2是一对姐妹素数。声明函数f(n),参数n为自然数,函数返回n以内的姐妹素数的对数。注意不要在控制台输出任何内容。

function f(n)
{
var i,j,k,sum=0,flag1,flag2;
for(i=3;i<=n;i++)
{
	flag1=1,flag2=1;
	for(j=2;j<i;j++)
	{
		if(i%j==0)
		{
			flag1=0;
			break;
		}
		for(k=2;k<i+2;k++)
		{
			if((i+2)%k==0)
			{
				flag2=0;
				break;
			}
		}
	}
	if(flag1==1&&flag2==1){
	sum++;
	}
}
return sum;}

15.一个素数,如果从最低位开始每次去掉一位数字,得到的都是素数,则该数称为超级素数。声明函数superPrime(n),参数n为自然数,如果n是超级素数,则函数返回true,否则返回false。注意不要在控制台输出任何内容。

function superPrime(n){
	if(n == 0 || n == 1) return 0;
	else{
		var array = [];
		var count = 0;
		for(let j = n; j >= 2; j--){
			let flag = 0;
			for(let i = 2; i <= Math.sqrt(j); i++){
				if(j % i == 0){
					flag = 1;
					break;
				}	
			}
			if(flag == 0){
				array.push(j);
			}
		}
		if(array[0] != n) return false;
		var len = n.toString().length;
		for(let k = 0 ;n >= 10; k++){
			n = n / 10;
			n  = Math.floor(n);
			for(let m = 0; m < array.length; m++){
				if(n == array[m]){
					count++;
				}
			}
		}
		if(count == len -1){
			return true;
		} else{
			return false;
		}
	}
}

16.一个素数,如果从最低位开始每次去掉一位数字,得到的都是素数,则该数称为超级素数。声明函数f(n),参数n为自然数,函数返回n以内的超级素数的个数。注意不要在控制台输出任何内容。

function f(n){
	if(n == 0 || n == 1) return 0;
	else{
		var array = [];
		var count = 0;
		var count1 = 0;
		for(let j = n; j >= 2; j--){
			let flag = 0;
			for(let i = 2; i <= Math.sqrt(j); i++){
				if(j % i == 0){
					flag = 1;
					break;
				}	
			}
			if(flag == 0){
				array.push(j);
			}
		}
		for(var q = 0; q < array.length; q++){
			var len = array[q].toString().length;
			let number = array[q];
			for(let k = 0 ;number >= 10; k++){
					number = number / 10;
					number  = Math.floor(number);
					for(let m = 0; m < array.length; m++){
						if(number == array[m]){
							count++;
						}
					}
			}
			if(count == len -1){
				count1++;
			}
			count = 0;
		}
		return count1;
	}
}

17.超级素数的另一种概念:如果2位数素数去掉高位数字后是1位数素数,则该数是超级素数;m(m>1)位超级素数去掉最高位后是m-1位超级素数。声明函数superPrime(n),参数n为自然数,如果n是超级素数,则函数返回true,否则返回false。注意不要在控制台输出任何内容。

function superPrime(n){
	if(n == 0 || n == 1 || n == 2 || n == 3 || n == 5 || n == 7) return false;   //还可以 n < 10
	else{
		var array = [];
		var count = 0;
		for(let j = n; j >= 2; j--){   //从最大值n开始算起判断素数,依次减小逐个判断。
			let flag = 0;
			for(let i = 2; i <= Math.sqrt(j); i++){
				if(j % i == 0){
					flag = 1;
					break;
				}	
			}
			if(flag == 0){
				array.push(j);  //将n以内的素数放在array数组内。
			}
		}
		if(n != array[0]) return false;  //如果array[0]不是n的话 说明n不是素数直接返回false
		var len = n.toString().length; //求出n值的位数
		let number = n;  
		let count11 = len - 1; 
		let flag1 = 0; //用于记录从高位的每位数
		for(let k = 0 ; number >= 10; k++){
				flag1  = Math.floor(number/Math.pow(10,count11)); 
				number = number - (flag1 * Math.pow(10,count11)); //依次减去当前最高位的对应数
				for(let m = 0; m < array.length; m++){
					if(number == array[m]){   //判断剩下的数是否在素数数组array里面,有则count+1
						count++;
					}
				}
				count11 = count11 - 1;
		}
	    if(count == len - 1){  //因为最高位之前是素数的直接去掉最高位计算下一位,所以对应的位数减1
			return true;
		}else{
			return false;
		}
	}
}

18.超级素数的另一种概念:如果2位数素数去掉高位数字后是1位数素数,则该数是超级素数;m(m>1)位超级素数去掉最高位后是m-1位超级素数。声明函数f(n),参数n为自然数,函数返回n以内的超级素数的个数。注意不要在控制台输出任何内容。

function f(n){
	if(n < 10) return 0;
	else{
		var array = [];
		var count = 0;
		var count1 = 0;
		var count111 = 0;
		for(let j = n; j >= 2; j--){
			let flag = 0;
			for(let i = 2; i <= Math.sqrt(j); i++){
				if(j % i == 0){
					flag = 1;
					break;
				}	
			}
			if(flag == 0){
				array.push(j);
			}
		}
		for(var q = 0; q < array.length; q++){
			var len = array[q].toString().length;
			let number = array[q];
			let count11 = len - 1;
			let flag1 = 0;
			for(let k = 0 ;number >= 10; k++){
				    flag1  = Math.floor(number/Math.pow(10,count11));
					number = number-flag1*Math.pow(10,count11);
					for(let m = 0; m < array.length; m++){
						if(number == array[m]){
							count++;
						}
					}
				    count11 = count11 - 1;
			}
			if(count == len - 1){
				count111++;
			}
			count = 0;
		}
		return count111-4;
	}
}

19.汉诺塔问题:n个金盘按由大到小的顺序叠放在1号塔台上,现要将其移动到3号塔台上,每次只能移动一个金盘,可以借助2号塔台,每个塔台都必须保持由大到小的叠放次序。声明函数f(n,m),n为金盘数,m为最少移动步数方案中的第m步,返回第m步从哪个塔台取金盘。注意不要在控制台输出任何内容。

var num=0,sum,result=1;
function move(n,from,buffer,to)
{
    if (n == 1)
	{
		num++;
		if(sum==num)
		{
			result=from;
			return result;
		}
    }
    else {
        move (n-1, from, to, buffer);
        num++;
		if(sum==num)
		{
			result=from;
			return result;
		}
        move (n-1, buffer, from, to);
    }
}

function f(n,m)
{	
	sum=m;
	move(n,1,2,3);
	return result;
}

20.声明函数f(a,b),如果b是数组a的元素,则返回第一个b的下标,否则返回-1。

function f(a,b)
{
	var num=0,flag=0,i=0;
	for(var i=0;i<a.length;i++)
	{
		if(a[i]==b)
		{
			flag=1;
			num=i;
			break;
		}
	}
	if(flag==1)
		return num;
	else 
		return -1;
}

JavaScript练习题1–10
JavaScript练习题21-25



这篇关于JavaScript练习题11-20的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程