1.在控制台输出1~1000之中,所有能被5整除,或者被6整除的数字。
var num = 0;
for(var i = 1; i <= 1000; i++) {
if(i%5 === 0 && i%6 === 0){
console.log(i);
}
}
/* function getNumber(){
for(var i = 1; i <= 1000; i++){
(i % 5 == 0 && i % 6 == 0) ? console.log(i) : ''
}
}
getNumber() */
2.用户输入一个数字n,计算1+2+3+4+……n的和。
var num = 0;
var x = prompt('输入一个数字');
for (var i = 1; i <= x; i++) {
num += i;
}
console.log(num);
/* function getSum(){
var number = prompt('请输入一个数字');
var sum = 0;
for(var i = 1; i < number.length; i++){
sum += i;
}
} */
3.用户输入一个数字n,计算3/2+4/3+5/4+......+(n+1)/n。
var n = prompt()
var x = 0;
for(var i = 2; i <= n; i++) {
x+= (i+1)/i
console.log(i);
}
console.log(x);
/* function getSum(){
var n = prompt('请输入一个数字');
var sum = 0;
for(var i = 2; i < n; i++){
sum += (i+1)/i;
}
}
getSum(); */
4.用户输入一个数字,在控制台中列出它的所有约数。
var num = prompt()
for(var i = 0; i <= num; i++) {
if(num % i === 0){
console.log(i);
}
}
/* function getYue(){
var number = prompt('请输入一个数字');
for(var i = 1; i < number; i++){
if(number % i == 0){
console.log(i+"是一个约数")
}
}
}
getYue(); */
5.大家从小到大,都玩儿过的一个庸俗的游戏:
游戏玩儿法就是,大家轮流报数,如果报到能被7整除的数字,
或者尾数是7的数字,都算踩地雷了。就应该罚唱歌。
请在控制台输出1~60之间的所有“安全数”。
比如:1、2、3、4、5、6、8、9、10、11、12、
13、15、16、18、19、20、22、23、24、25、26、29、30……
for(var i = 1; i <= 60; i++) {
if(!(i%7 === 0 || i%10 === 7)){
console.log(i);
}
}
/* function playGame(){
for(var i = 1; i <= 60; i++){
if(i % 7 == 0 || i % 10 == 7){
continue;
}else{
console.log(i)
}
}
}
playGame(); */
7.水仙花数
水仙花数是一种特殊的三位数,它的特点就是,每个数位的立方和,
等于它本身。比如153就是水仙花数。因为:1^3 + 5^3+ 3^3 = 153。
那么100~999之内,只有4个水仙花数,请编程找出来。
for(var i = 100; i<= 999; i++){
var g = i % 10;
var s = parseInt((i/10) % 10) ;
var b = parseInt(i / 100) ;
if(((g*g*g)+(s*s*s)+(b*b*b)) == i){
console.log(i);
}
}
/* function getCountNumber(){
for(var i = 100; i <= 999; i++){
var a = i % 10;
var b = parseInt(i / 10) % 10;
var c = parseInt(i / 100);
// 求立方和
// var sum = a**3+b**3+c**3;
var sum = Math.pow(a,3) + Math.pow(b,3) + Math.pow(c,3);
sum == i && console.log(i)
}
}
getCountNumber(); */
8.如果一个数恰好等于它的因数之和,则称该数为“完美数”。
例如:第1个完全数是6,它有因数1、2、3、6,除去它本身6
外,其余3个数相加,1+2+3=6。第2个完全数是28,它有因数1、
2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
试寻找1~10000之间的所有完美数
/* for (var i = 1; i <= 10000; i++) {
var x = 0;
for (var l = 0; l < i; l++) {
if (i % l === 0) {
x += l;
}
}
if (x === i) {
console.log(i);
}
} */
function getNumber(){
for(var i = 1; i <= 10000; i++) {
var sum = 0;
for(var item of getNumberArray(i)){
sum += item;
}
sum == i && console.log(i + '是一个完美数');
}
}
function getNumberArray(number){
var arr = [];
for(var j = 1; j < number; j++){
if(number % j == 0){
arr.push(j)
}
}
return arr;
}
getNumber()
9.用户输入一个数字,判断这个数字是否是质数。
var num = prompt();
function getNum(num) {
if (num == 0 || num == 1) {
return num + '不是质数';
}
for (var i = 2; i < num; i++) {
if (num % i == 0) {
return num + '不是质数';
}
}
return num + '是质数';
}
alert(getNum(num));
10.列出1~10000的所有质数。
for(var i = 2; i<= 10000; i++) {
var sum = true;
for(var j = 2; j< i; j++) {
if(i % j == 0){
sum = false;
}
}
if(sum == true){
console.log(i);
}
}
11.苹果3元一个,鸭梨2元一个,桃子1元一个。现在想用200元买100个水果
在控制台中列出所有可能性
var a = 0;
var b = 0;
var c = 0;
var apple = 3;
var pear = 2;
var peach = 1;
for(a = 0; a<=66;a++){
for(b = 0; b<=100;b++){
for(c =0;c<=100;c++){
if(a+b+c == 100 && (a*apple) + (b*pear) + (c*peach) <= 200 ){
console.log(a,b,c);
}
}
}
}
/* function getNumber(){
for(var appleCount = 0; appleCount <= 100; appleCount++){
for(var pearCount = 0; pearCount <= 100; pearCount++){
for(var pearchCount = 0; pearchCount <= 100; pearchCount++){
if(appleCount + pearCount + pearchCount == 100 && appleCount*3 + pearCount*2 + pearchCount <= 200){
console.log(appleCount,pearCount,pearchCount)
}
}
}
}
}
getNumber(); */
12.求1! + 2! + 3! + 4! + …… + 10!的和,叹号表示阶乘,如4! = 1 * 2 * 3 * 4
var sum =1;
var sums = 0;
for(var i = 1 ; i <=10;i++) {
sum*=i;
sums += sum;
}
console.log(sums);
/* function getNumber(){
var sum1 = 0;
for(var i = 1; i <= 10; i++){
var sum = 1;
// 求阶乘
for(var j = 1; j <= i; j++){
sum *= j;
// sum = sum * j
}
}
sum1 += sum;
console.log(sum1)
}
getNumber(); */
13.求一个三位数,该三位数等与其每位数字的阶乘之和。
for (var n = 100; n < 1000; n++) {
var a = parseInt(n / 100)
var b = parseInt(n / 10) % 10
var c = parseInt(n % 10)
if (n == fun(a) + fun(b) + fun(c)) {
console.log(n);
}
}
function fun(i) {
var n = 1;
var s = 1;
while (n <= i) {
s *= n;
n += 1;
}
return s
}
/* function jc(a) {
mul = 1;
for (i = 1; i <= a; i++) {
mul *= i;
}
return mul;
}
//判断三位函数
function isfree(i) {
//拆分位数
var g = i % 10;
var s = parseInt(i / 10) % 10;
var b = parseInt(i / 100);
//计算各个位数阶乘之和
var sum = jc(g) + jc(s) + jc(b);
//判断与i是否相等
if (sum === i) {
return true;
} else {
return false;
}
}
for (var j = 100; j <= 999; j++) {
if (isfree(j)) {
console.log(j + "是这个三位数");
}
} */
/* function getNumber(){
for(var i = 100; i <= 999; i++){
i == getSum(i) && console.log(i)
}
}
function getSum(number){
var array = (number + '').split('');
var sum1 = 0;
for(var item of array){
var sum = 1;
for(var j = 1; j <= item; j++){
sum *= j;
}
sum1 += sum;
}
return sum1;
}
getNumber() */
14.编写一个函数rev用于将一个整数前后倒置。
例如rev(12345)将返回54321,rev(123)
将返回321,整数位数不限制,多少位都行。
function rev(number) {
var sum = ''
while(number){
sum += number % 10
number = parseInt((number / 10))
}
console.log(sum/1);
return sum
/* while (!null) {
sum += number % 10;
number = parseInt((number / 10));
if (!number) break;
}
console.log(sum / 1) */
}
rev(12345)
/* function rev(number){
var strArray = (number + '').split("").reverse();
var str = '';
for(var item of strArray){
str += item;
}
console.log(str/1)
}
rev(12345) */
15.如果整数A 的全部约数(包括1,不包括A 本身)之和等于B,且整数B 的全部约数(包括1,不包括B 本身)之和等于A,则称整数A和B是一对亲密数。求3000 以内的全部亲密数。
function yueshuhe(a) {
var sum = 0;// 累加器
// 循环累加约数
for (var i = 1; i < a; i++) {
if (a % i === 0) {
sum += i;
}
}
// 循环结束后,sum 中存了 a 的约数和
return sum;
}
// 制作判断亲密数函数
// 说明:输入一个数,判断是否有亲密数
function isintimatenumber(a) {
// 一个数如果有亲密数,那么这个亲密数肯定是 a 的约数和
// 直接求 a 的约数和
var b = yueshuhe(a);
// 反推 b 的约数和是否等于 a,如果相等就是亲密数,a 不能等于 b
if (yueshuhe(b) === a && a != b) {
return true;
} else {
return false;
}
}
// 直接输出 3000 以内的亲密数
for (var i = 1; i <= 3000; i++) {
var j = yueshuhe(i);
if (isintimatenumber(i) && j <= 3000) {
console.log(i + "和" + j + "是亲密数");
}
}
/* function loveNumber(){
for(var i = 1; i <= 1000; i++){
for(var j = 1; j <= 1000; j++){
if(getLoveNumberSum(i) == j && getLoveNumberSum(j) == i){
console.log(i+'和'+j+'是亲密数')
}else{
continue;
}
}
}
}
function getLoveNumberSum(number){
var sum = 0;
for(var j = 1; j < number; j++){
if(number % j == 0){
sum += j;
}
}
return sum;
}
loveNumber() */
16.编写函数repeat(char,n) 实现重复char字符串n次,
比如repeat("★",6) 返回"★★★★★★"
function repeat(char,n){
// var str = '';
var array = [];
for(var i = 0; i < n; i++){
// str += char;
array.push(char)
}
// '1111111'
return array.join('');
}
/*repeat(prompt('请输入一个字符串'),prompt('请输入重复多少次')) */
17.在控制台输出图形
*
***
*****
*******
*********
function print(){
var n = prompt('请输入三角形的层数');
for(var i = 0; i < n; i++){
// console.log(" ".repeat(n-i-1)+"*".repeat(i*2+1))
console.log(repeat(" ",n-i-1)+repeat("*",i*2+1))
}
}
print()
18.编写函数rev(char) 实现将字符串char倒置,比如rev("spring") 返 回"gnirps"
function rev(str){
// var array = str.split('').reverse().join('');
// console.log(array)
var array = str.split('');
var newArray = [];
var i = array.length - 1;
for(var item of array){
// newArray.unshift(item)
newArray[i] = item;
i--;
}
console.log(newArray.join(''))
}
rev("spring")
9.将字符串"i come from beijing"倒置,即控制台输出"beijing from come i",语句直接写在程序中,不需要用户输入
function comeForm(){
var char = 'i come from beijing';
var charArray = char.split(' ');
console.log(charArray.reverse().join(' '));
/* var newArray = [];
var i = charArray.length - 1;
for(var item of charArray){
// newArray.unshift(item)
newArray[i] = item;
i--;
}
console.log(newArray.join(' ')) */
}
comeForm()
20.编写函数rightchange(char,n)实现字符串char循环右移n位。
比如rightchange("abcdefg",2) 返回"fgabcde"。
function moveright(str,k){
var strArray = str.split('');
for(var i = 0; i< k; i++){
strArray.unshift(strArray.pop())
}
console.log(strArray.join(''));
}
moveright('abcdefg',2)
21.编写函数maxr(char) 返回字符串char中最长的连续重复字母
比如maxr("mmmiijjjjkkkkkkssptr") 返回"kkkkkk"
function logRev(str){
var newStr = '';
var newStrLength = 0;
for(var i = 0; i < str.length; i++){
for(var j = i+1; j < str.length; j++){
var substr = str.substring(i,j+1)
var char = substr.charAt(0)
var flage = true;
for(var k = 1; k < substr.length; k++){
if(char != substr.charAt(k)){
flage = false;
break;
}
}
if(flage){
if(substr.length > newStrLength){
newStr = substr;
newStrLength = substr.length;
}
}else{
break;
}
}
}
return newStr;
}
console.log(logRev('mmmiijjjjkkkkkkssptr'));
22.有10个学生的成绩存在数组中,请统计大于等于平均成绩的人数。成绩直接以数组形式写在程序中,不需要用户输入
function countGrades(grades){
var array = [];
var avgSum = 0;
for(var item of grades){
// 平均分
avgSum += item/grades.length
}
for(var item of grades){
if(item >= avgSum){
array.push(item)
}
}
console.log('平均数是:'+avgSum)
console.log('大于等于平均成绩有:',array)
}
countGrades([10,20,30,40,55,60,70,80,90,100])
23.有10个学生的成绩存在数组中,请统计最高分,最低分,并将最高分和最低分学生的下标输出到控制台
function grades(array){
var maxgrades = 0;
for(var i = 0; i <array.length;i++){
var mingrades = 0;
for(var j =1; j<array.length; j++){
if(i>j){
maxgrades = i;
}else if(i<j){
mingrades =i;
}
}
}
return '最大的数是'+array[maxgrades] + '\n'+'最大的数的下标' + maxgrades+ '\n' +'最小的数是'+array[mingrades]+ '\n'+ '最小的数的下标是' +mingrades
}
console.log(grades([10,20,30,40,55,60,70,80,90,100]));
console.log([10,20,30,40,55,60,70,80,90,100]);
24.勾股定理:直角三角形中,两个直角边的平方和,等于斜边平方和。寻找三边的长度都不大于100,并且三边边长都是整数的可能,在控制台输出。
function pythagoreanTheorem(n) {
for (var i=1; i<=n; i++) {
for (var j=i;j<=n; j++) {
for (var k=j; k<=n; k++) {
if((i**2)+(j**2)==(k**2) && (i+j)>=k){
console.log(i,j,k);
}
}
}
}
}
pythagoreanTheorem(100)
25.编写函数maxsame(char1,char2) 返回字符串char1和char2的最大相同子串,
比如maxsame("abcdefghijklmn","mndefghlm") 返回"defgh"。
function maxsame(str1,str2){
var newStr = '';
var newStrLength = 0;
for(var i = 0; i < str1.length; i++){
for(var j = i+1; j < str1.length; j++){
var substr = str1.substring(i,j+1);
if(str2.indexOf(substr) != -1 && substr.length > newStrLength){
newStr = substr;
newStrLength = substr.length;
}
}
}
return newStr;
}
// abcde a ab abc abcd abcde
// b bc bcd bcde
console.log(maxsame('abcdefghijklmn','mndefghlm'))
26.将"i love javascript cai guai"的每个单词的第一个字母,变为大写。
/* function Becomeuppercase(str){
var array = str.split(' ')
for(var i = 0; i < array.length; i++){
// console.log(i);
array[i] = array[i].replace(array[i][0],array[i][0].toUpperCase())
// console.log(array[i][0].toUpperCase());
}
array = array.join(' ')
return array
}
console.log(Becomeuppercase('i love javascript cai guai'));
console.log('i love javascript cai guai'); */
/* function Becomeuppercase(str){
var newStr = ''
var array = str.split(' ')
// var array1 = [] // 第二种方法
// console.log(array);
for(item of array){
// console.log(item[0]);
item = item.replace(item[0],(item[0]).toUpperCase())
// console.log(item);
newStr += item + ' '
// array = item.replace(item[0],(item[0]).toUpperCase())
// array1.push(array)
}
console.log(newStr);
//转字符串写法
// console.log(array1.join(' '));
}
Becomeuppercase('i love javascript cai guai')
console.log('i love javascript cai guai'); */
function firstLowCase(str) {
var str1 = str.split(' ');
var tmp1 = '';
console.log(str1);
for (var i of str1) {
var a = i.charAt(0).toUpperCase();
var b = i.substring(1);
console.log(a,b);
var res = a + b + ' ';
tmp1 += res;
}
return tmp1;
}
console.log(firstLowCase('i love javascript cai guai'));
27.八皇后算法在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法
function eightEmpress(a , cur){
if(cur == a.length){
console.log(a)
return;
}
for(var i = 1; i <= a.length; i++){
a[cur] = i
var flag = true;
for(var j = 0 ; j < cur ; j++){
var ab = i - a[j];
if(a[j] == i || (ab > 0 ? ab : -ab) == cur - j){
flag = false;
break;
}
}
if(flag){
eightEmpress(a , cur + 1)
}
}
}
eightEmpress([1,1,1,1,1,1,1,1],0)