1.在calDate()的基础之上添加 计算当前日期的是星期几的功能
注:设定1900年1月1日为周一
2判断101-200之间有多少个素数,并输出所有素数。
3.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
4.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
5.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
6.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
7.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
8.计算用户输入的数字的阶乘,例如用户输入的是5,则计算5的阶乘,5的阶乘为 5*4*3*2*1
9.定义一个函数,返回1+1/3+1/5+1/7+....1/n的和
<button onclick="one()">年份</button>
<button onclick="two()">素数</button>
<button onclick="three()">水仙花数</button>
<button onclick="four()">质因数</button>
<button onclick="five()">叠加</button>
<button onclick="six()">桃子</button>
<button onclick="seven()">年龄</button>
<button onclick="eight()">阶乘</button>
<button onclick="nine()">加法</button>
<script type="text/javascript">
// 1.在calDate()的基础之上添加 计算当前日期的是星期几的功能
// 注:设定1900年1月1日为周一
function one() {
//输入年月日;
var year = Number(prompt('请输入年:'));
var month = Number(prompt('请输入月:'));
var days = Number(prompt('请输入天:'));
//先给闰年赋一个值
var isRun = (year%4==0 && year%100!=0)||year%400 ==0;
var totals=0;
// 循环变量
var i = 1;
while(i<month){//当前月的前面一共有多少天
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
totals +=31;
break;
case 2:
// 根据年份判断二月的天数,isRun用在这里
if(isRun){
totals +=29;
}else{
totals +=28;
}
break;
case 4:
case 6:
case 9:
case 11:
totals += 30;
break;
}
i++;
}
// 累积加上当前月的天数
totals += days;
console.log('今天是'+ year+"年的第"+ totals +"天");
// 累积计算,从1900年到year-1年,共多少天
for(var j = 1900;j<year;j++){
// 判断j年是否为闰年
if((j%4==0 && j%100!=0)||j%400==0){
totals +=366;
}else{
totals +=365;
}
}
console.log('从1900年到现在一共'+totals+"天");
// 计算 是星期几
var week = totals % 7;
var msg = "星期";
switch (week) {
case 0:
msg +="日";
break;
case 1:
msg +="一";
break;
case 2:
msg +="二";
break;
case 3:
msg +="三";
break;
case 4:
msg +="四";
break;
case 5:
msg +="五";
break;
case 6:
msg +="六";
break;
}
console.log('今天是'+ year+"年的第"+ days +"天,是"+msg);
}
function two(){
//2判断101-200之间有多少个素数,并输出所有素数。
var num;
//给个数,让这个数在101到200之间,开始验证素数
for(num = 101;num <201;num++){
//count是开关,避免重复输出num
var count = 0;
//记得给i赋值
var i;
//素数是除1和本身以外不能被整除的数
for(i = 2;i < num;i++){
if (num % i ==0) {
count += 1
//count加上1.则跳出,反正已经不是素数了,不必浪费内存
break;
}
}
if(count == 0){
console.log('素数有:' + num);
}
}
}
function three(){
//3.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
var num;
//输的范围
for(num = 100;num < 1000;num++){
//百位
var a = parseInt(num / 100);
//十位
var b = parseInt((num % 100)/10);
//个位
var c = parseInt(num % 10);
//水仙花数的条件
if(num == a*a*a+b*b*b+c*c*c){
console.log('100~1000中水仙花数有' + num);
}
}
}
function four(){
// 4.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
// 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
// (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
// (2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
// 1.输入数据 n
var n = prompt("请输入一个正整数:");
// 将这个n 去取最小质数 k (2---n)的余数
var msg = n+"=";
for(var k = 2;k<=n;k++){
// 90%2 == 0 2是90的质因数
while(n%k == 0 && n !=k ){
// 打印出k
console.log(k);
msg += (k + "*");
// 将n除以k的商(结果),作为新的正整数赋值给n
n = n/k;
}
if(k == n){
msg +=n;
}
}
console.log(msg);
}
function five(){
// 5.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
/*首先列个数演算,得出num和n的规律
2 10*n + 2=2 n=0
22 10*n + 2=22 n=2
222 10*n + 2=222 n=22
2222 10*n + 2=2222 n=222
*/
//输入数字和所叠加的个数
var num = Number(prompt("请输入一个数字:"));
var count = Number(prompt("请输入叠加的个数"))
// 记录和的变量,初始都为0,以便存取
var sum = 0;
var n = 0 ;
var i;
for(var i =1;i<=count;i++){
// n记录每一个加数
n = n*10 + num;
console.log(n);
sum += n;
}
console.log(n + '个' + num + '的叠加的和为' + sum);
}
function six(){
// 6.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
//第一天和第十天
var one;
var ten = 1;
var i;
//中间吃了九天,所以加九次
for(i = 1;i <= 9;i++){
//每次与前一天的数值交换
one = (ten + 1) * 2;
ten = one;
}
console.log('一共摘了' + one + '个');
}
function seven(){
// 7.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,
// 他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,
// 说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
//赋值第一个人的年龄,第五个人。
var one = 10;
var five;
var i;
//每个人都比前一个小两岁,循环四次
for(i = 1;i <= 4;i++){
five = one + 2;
one = five;
}
//输出第五个人年龄
console.log('第五个人的年龄为' + five);
}
// 8.计算用户输入的数字的阶乘,例如用户输入的是5,则计算5的阶乘,
// 5的阶乘为 5*4*3*2*1
function eight(){
//从1开始乘起
var x = 1;
var n = prompt('请输入一个数字:');
var i;
//循环n次,每次后的值都为前两个数的乘。
for(i = 1;i <= n;i++){
x *= i;
}
console.log('这个数的阶乘是' + x);
}
// 9.定义一个函数,返回1+1/3+1/5+1/7+....1/n的和
function nine(){
//定义一个数字和 sum,n 为想要加到1/n,不然无限加下去是没结果的。
var sum = 0,n = prompt('请输入一个正奇数:');
var i;
// sum数字和的值邓毅前面两次的和,而且都是奇数。
for(i = 1; i <= n;i += 2){
sum += 1/i
}
//输出
console.log('从1加到1/n的值为' + sum);
}
</script>