练习八
游戏玩儿法就是,大家轮流报数,如果报到能被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){
continue;//是不安全数跳出本次循环
}
console.log(i);//安全数
}
方法二条件取反,就可以去掉contionue
for(var i=1;i<=60;i++){
if(!(i % 7==0 || i % 10==7)){
console.log(i);
}
}
方法三 继续优化,短路算法
for(var i=1;i<=60;i++){
!(i % 7==0 || i % 10==7) && console.log(i);
}
第九题:
水仙花数是一种特殊的三位数,它的特点就是,每个数位的立方和,等于它本身。
比如153就是水仙花数。因为:
1 3+53+33 = 153
100~999之内,只有4个水仙花数,请编程找出来。
for(var i = 100; i <1000; i++){
var gw = i % 10;
var sw = parseInt(i/10)%10;
var bw = parseInt(i / 100);
var gw3 = Math.pow(gw,3);
var sw3 = Math.pow(sw,3);
var bw3 = Math.pow(bw,3);
if(gw3 + sw3 + bw3 == i){
console.log(i);
}
}
合并
for(var i = 100; i <1000; i++){
var gw = i % 10;
var sw = parseInt(i/10)%10;
var bw = parseInt(i / 100);
if(Math.pow(gw,3) + Math.pow(sw,3) + Math.pow(bw,3) == i){
console.log(i);
}
}
方法二
var result=0;
var num=i;
while(num){
result += Math.pow(num % 10,3);
num=parseInt(num / 10);
}
if(result==i){
console.log(i);
}
}
第十题
如果一个数恰好等于它的因数(除了这个数字自身)之和,则称该数为“完美数”。
例如:
第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<=1000;i++){
var result=0;
for(var j=1;j<i;j++){ //j<i,没有=i这已经去除本身
if(i %j==0){
result += j;
}
}
if(result==i){
console.log(i);
}
}
第十一题
苹果3元一个,鸭梨2元一个,桃子1元一个。现在想用200元买100个水果,在控制台中列出所有可能性
console.time("a");
for(var i=0;i<=100;i++){
for(var j=0;j<=100;j++){
for(var k=0;k<=100;k++){
if(i+j+k==100 && 3*i+2*j+k==200){
console.log("符合条件的水果数量是"+" "+ i+" "+j+" "+k);
}
}
}
}
console.timeEnd("a") //显示打印时间
方法一优化
for(var i=0;i<=50;i++){ //200元苹果最多可以买不到70个,同时还要满足100个水果的条件,所以苹果最多50个
for(var j=0;j<=100;j++){
var k=100-i-j //梨子数量不用循环了,是100-i-j
if(3*i+2*j+k==200){
console.log("符合条件的水果数量是"+" "+ i+" "+j+" "+k);
}
}
}
第十二题
用户输入一个数字,判断这个数字是否是质数。
var num = parseInt(prompt("请输入数字"));
var count=0;
for(var i=1;i<=num;i++){
if(num % i ==0){
count++
}
}
if(count==2){
console.log(num +"是一个质数");
}
优化 利于扩展的
var count=0;
for(var i=1;i<=num;i++){
if(num % i ==0){
count++
}
}
if(count==2){
console.log(num +"是一个质数");
}
}
再优化 循环里去掉1和自身 count个数为0
for(var num=1;num<=100;num++){
var count=0;
for(var i=2;i<num;i++){
if(num % i ==0){
count++
}
}
if(count==0){
console.log(num +"是一个质数");
}
}
再优化count只有不为0了就不是质数,所以找到一个就终止,通过函数
function aa(num){
for(var i=2;i<num;i++){
if(num % i ==0){
console.log(num + "不是一个质数");
return;//函数终止条件
}
}
console.log(num +"是一个质数");
}
aa(9)
网友评论