11.声明函数factorial(n),参数n为自然数,函数返回n的阶乘。注意0!=1。注意不要在控制台输出任何内容。
function factorial(n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
12.声明函数prime(n),参数n为自然数,当n为素数时,函数返回true,否则返回false。
注意不要在控制台输出任何内容。
function prime(n) {
let count = 0;
for (let i = 1; i <= n; i++) {
if (n % i == 0) {
count++;
}
}
if (count == 2) {
return true;
} else {
return false;
}
}
13.声明函数f(n),参数n为自然数,函数返回n以内的素数个数。
注意不要在控制台输出任何内容。
function prime(n) {
let count = 0;
for (let i = 1; i <= n; i++) {
if (n % i == 0) {
count++;
}
}
if (count == 2) {
return true;
} else {
return false;
}
}
function f(n) {
var count = 0;
for (let i = n - 1; i > 0; i--) {
if (prime(i)) {
count++;
}
}
return count;
}
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.如果一个素数依次去掉其最低位数字后,所得均为素数,则该数是超级素数。
注意超级素数不能是个位数。
声明函数f(n),参数n为自然数,如果n是超级素数,则函数返回true,否则返回false。
例如:233都是超级素数,7、137、307都不是是超级素数
注意不要在控制台输出任何内容。
//判断质数
function prime(n) {
let count = 0;
for (let i = 1; i <= n; i++) {
if (n % i == 0) {
count++;
}
}
if (count == 2) {
return true;
} else {
return false;
}
}
function maxPrime(n) {
if (prime(n) && n > 9) {
while (n) {
n = Math.floor(n / 10);
if (!prime(n) && n > 0) {
return false;
}
}
return true;
} else {
return false;
}
}
16.如果一个素数依次去掉其最低位数字后,所得均为素数,则该数是超级素数。
注意超级素数不能是个位数。
声明函数f(n),参数n为自然数,函数返回n以内的超级素数的个数。
例如:20以内的超级素数的个数为0,100以内的超级素数的个数为9。
注意不要在控制台输出任何内容。
//判断质数
function prime(n) {
let count = 0;
for (let i = 1; i <= n; i++) {
if (n % i == 0) {
count++;
}
}
if (count == 2) {
return true;
} else {
return false;
}
}
//console.log(prime(n));
function maxPrime(n) {
if (prime(n) && n > 9) {
while (n) {
n = Math.floor(n / 10);
if (!prime(n) && n > 0) {
return false;
}
}
return true;
} else {
return false;
}
}
function f(n) {
let count = 0;
for (var i = n; i > 0; i--) {
if (maxPrime(i)) {
count++;
}
}
return count;
}
17.超级素数的另一种概念:
如果一个素数依次去掉其最高位数字后,所得均为素数,则该数是超级素数。
注意超级素数不能是个位数;超级素数不能包含数字0。
声明函数f(n),参数n为自然数,如果n是超级素数,则函数返回true,否则返回false。
例如:223是超级素数,3、11、103都不是超级素数。
注意不要在控制台输出任何内容。
//检测质数
function prime(n) {
let count = 0;
for (let i = 1; i <= n; i++) {
if (n % i == 0) {
count++;
}
}
if (count == 2) {
return true;
} else {
return false;
}
}
function f(n) {
let len = n.toString().length;
let number = Math.pow(10, len - 1);
if (!prime(n) || len <= 1) {
return false;
}
//判断个位是否是素数
if (!prime(n % 10)) {
return false
}
//检测是否包含数字0
while (n) {
if ((n % 10) == 0) {
return false;
}
n = Math.floor(n / 10);
}
//判断是否是超级素数
while (n) {
n = ((n / number) - Math.floor(n / number)) * number;
if (!prime(n)) {
return false;
}
number = Math.floor(number / 10);
}
return true;
}
18.超级素数的另一种概念:
如果一个素数依次去掉其最高位数字后,所得均为素数,则该数是超级素数。
注意超级素数不能是个位数;超级素数不能包含数字0。
声明函数f(n),参数n为自然数,函数返回n以内的超级素数的个数。
例如:100以内的超级素数的个数是11。
注意不要在控制台输出任何内容。
//检测质数
function prime(n) {
let count = 0;
for (let i = 1; i <= n; i++) {
if (n % i == 0) {
count++;
}
}
if (count == 2) {
return true;
} else {
return false;
}
}
function maxPrime(n) {
let len = n.toString().length;
let number = Math.pow(10, len - 1);
if (!prime(n) || len <= 1) {
return false;
}
//判断个位是否是素数
if (!prime(n % 10)) {
return false
}
//检测是否包含数字0
while (n) {
if ((n % 10) == 0) {
return false;
}
n = Math.floor(n / 10);
}
//判断是否是超级素数
while (n) {
n = ((n / number) - Math.floor(n / number)) * number;
if (!prime(n)) {
return false;
}
number = Math.floor(number / 10);
}
return true;
}
function f(n) {
let count = 0;
for (let i = n - 1; i > 0; i--) {
if (maxPrime(i)) {
count++;
}
}
return count;
}
19.汉诺塔问题:n个金盘按由大到小的顺序叠放在1号塔台上,现要将其移动到3号塔台上,每次只能移动一个金盘,可以借助2号塔台,每个塔台都必须保持由大到小的叠放次序。
声明函数f(n,m),n为金盘数,m为最少移动步数方案中的第m步,返回第m步从哪个塔台取金盘。
例如:3个金盘,第6步从2号塔台取金盘。
注意不要在控制台输出任何内容。
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) {
for (var i = 0; i < a.length; i++) {
if (a[i] == b) {
break;
}
}
if (a[i] == b) {
return i;
} else {
return -1;
}
}