javascript
2021年JS解决那些有趣的数学题
在學(xué)JavaScript時,總會遇到一些有趣的數(shù)學(xué)題,然而在實(shí)際工作中大多都是在寫業(yè)務(wù)代碼,其實(shí)解決那些數(shù)學(xué)題比寫業(yè)務(wù)代碼要有趣的多,一起來看一下有哪些有趣的數(shù)學(xué)題。
問題1:已知公雞5元每只,母雞3元每只,小雞3只1元,100元可以買100只雞,求公雞、母雞、小雞可買多少只?
for (var i = 0; i <= 20; i++) {for (var j = 0; j <= 33; j++) {for (var z = 0; z <= 100; z++) {if ((i + j + z == 100) && (5 * i + 3 * j + z / 3 == 100)) {document.write('公雞:' + i + '母雞:' + j + '小雞:' + z + '<hr/>');}}} }或者還可以這樣寫
for (var i = 0; i <= 20; i++) {for (var j = 0; j <= 33; j++) {z = 100 - i - j;if ((z % 3 == 0) && (5 * i + 3 * j + z / 3 == 100)) {document.write('公雞:' + i + '母雞:' + j + '小雞:' + z + '<hr/>');}} }問題2:已知1、2 、3 、4 個數(shù)字,能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少?
var count = 0; for (var i = 1; i <= 4; i++) { for (var j = 1; j <= 4; j++) { if (i != j) { for (var k = 1; k <= 4; k++) {if (j != k && k != i) {console.log("" + i + j + k);count++;}}}} }; console.log("共" + count + "次循環(huán)");問題3:請用JS輸出一個國際象棋棋盤。
for (var r = 0, str = ""; r < 8; r++) {for (var c = 0; c < 8; c++) {str += (r + c) % 2 == 0 ? "□" : "■";}str += "\n"; } console.log(str);問題4:雞兔同籠,共48只132條腿,求雞和兔各有多少只?
function start(a,b){var x=0;var y=0;for(var x=0;x<a; x++){y=48-x;if (2*x+4*y==b){console.log("雞有"+x+"只,兔有"+y+"只");}} }問題5:將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入90, 打印出 2*3*3*5
function decompose(n){var arr=[]; for(var i=2;i<=n;i++){ while(n%i==0){ arr.push(i); n/=i; }}return arr.join("*"); } console.log(decompose(90));問題6:隨機(jī)按規(guī)則輸出雙色球的號碼。
function doubleBall() {var reds = [];while (reds.length < 6) {var r = parseInt(Math.random() * 33 + 1);for (var i = 0; i < reds.length; i++) {if (r == reds[i]) {break;};if (i == reds.length) {reds.push(r);};}}function cmp(a, b) { return a - b; }reds.sort(cmp);var blue = parseInt(Math.random() * 16 + 1);return String(reds) + "|" + blue; } document.write(doubleBall());問題7:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問某個月的兔子總數(shù)為多少?
這個是典型的fibbnacci數(shù)列,即數(shù)列從第3項開始,每一項都等于前兩項之和,如 1,1,2,3,5,8,13,21,34,55
function fib(n){if(n<3){return 1;}else{return fib(n-1)+fib(n-2);} } console.log(fib(10));以上是采用的遞歸方法,但是效率極低,建議用循環(huán)代替,代碼如下:
function fib(n){if(n<3){return 1;}else{var a=1,b= 1,c;for(var i=3;i<=n;i++){c=a+b;a=b;b=c;}return c;} } console.log(fib(10));問題8:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個,第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第 10 天早上想再吃時,見只剩下一個桃子了,求第一天共摘了多少?
for(var i=10,sum=1;i>1;i--){sum+=1;sum*=2; } console.log(sum);問題9:1~100之間奇數(shù)和與偶數(shù)和分別是多少?
(1)、1~100之間奇數(shù)和
var sum=0; for(var i=1;i<=100;i++){if(i%2==1){sum+=i;} } document.write('1~100之間奇數(shù)的和為:'+sum+'<hr/>');(2)、1~100之間偶數(shù)和
var sum=0; for(var i=1;i<=100;i++){if(i%2==0){sum+=i;} } document.write('1~100之間偶數(shù)的和為:'+sum+'<hr/>');問題10:輸入一個數(shù),判斷它是素數(shù)還是合數(shù)?
function isPrime(n){if(n<=3){return true;}else{for(var i=2;i<=Math.sqrt(n);i++){ if(n%i==0){return false; } } } } console.log(isPrime(17));問題11:分別打印出正序和倒序9*9乘法表。
(1)、正序的9*9乘法表
document.write('<table border="1" cellpadding="0" cellspacing="0" bgcolor="#ABCDEF" width="80%">');for(var i=1;i<=9;++i){document.write('<tr>');for(var j=1;j<=i;j++){document.write('<td>'+i+'x'+j+'='+(i*j)+'</td>');}document.write('</tr>');} document.write('</table>');(2)、倒序的9*9乘法表
document.write("<table border='1' cellpadding='0' cellspacing='0' bgcolor='aqua' width='80%'>");for(var i=9;i>=1;i--){document.write('<tr>');for(var j=1;j<=i;j++){document.write('<td>'+i+'x'+j+'='+(i*j)+'</td>');}document.write('</tr>');} document.write('</table>');問題12:用*輸出一個等腰三角形
function triangle(ln){for(var r=1;r<=ln;r++){ for(var i= 1,str="";i<=ln+r-1;i++){ str+=i<=ln-r?" ":"*"; }console.log(str);} } triangle(5)總結(jié)
以上是生活随笔為你收集整理的2021年JS解决那些有趣的数学题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 触发onblur事件alert死循环问题
- 下一篇: 解决JS在controll层定义带循环的