1.分别使用while/do-while/for循环实现10的阶乘(使用递归算法)。
2.打印九九乘法表(四种形式)
3.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
4.判断101-200之间有多少个素数,并输出所有素数(只能被1和它本身整除的自然数为素数)
5.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方
6.将一个正整数分解质因数。例如:输入90,打印出90=233*5。
7.求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM)
8.求1000以内的完全数(若一个自然数,恰好与除去它本身以外的一切因数的和相等,这种数叫做完全数。)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>homework</title>
<link rel="stylesheet" href="./homework.css">
</head>
<body onload="result()">
<div id="jiecheng">
1.分别使用while/do-while/for循环实现10的阶乘(使用递归算法)
<div id="result1" >
方法一:while循环
<span id="res1"></span>
</div>
<div id="result1">
方法二:do while循环
<span id="res2"></span>
</div>
<div id="result1">
方法三:for循环
<span id="res3"></span>
</div>
</div>
<script>
function jc(){
// 简单的while循环
// 获取网页中的元素
var res1 = document.getElementById("res1");
var i = 1;
var a = 1;
while(a < 10){
a++;
i = i * a;
}
res1.innerHTML = i;
}
function jc2(){
// do while循环
// 获取网页中的元素
var res2 = document.getElementById("res2");
var i = 1;
var a = 1;
do{
a++;
i *= a;
}while(a < 10)
res2.innerHTML = i;
}
function jc3(){
// for循环
// 获取网页中的元素
var res3 = document.getElementById("res3");
var i = 1;
var a = 1;
for(;a <= 10; a++){
i *= a;
}
res3.innerHTML = i;
}
</script>
<div id="jiujiu">
<div class="name">2.打印九九乘法表(四种形式)</div>
<div id="box1" class="box">
<div id="title1" class="name" >形式一:</div>
<div id="con_1" class="content"></div>
</div>
<div id="box2" class="box">
<div id="title2" class="name" >形式二:</div>
<div id="con_2" class="content"></div>
</div>
<div id="box3" class="box">
<div id="title3" class="name">形式三:</div>
<div id="con_3" class="content"></div>
</div>
<div id="box4" class="box">
<div id="title4" class="name" >形式四:</div>
<div id="con_4" class="content"></div>
</div>
</div>
<script>
function con1(){
var res ;
var con_1 = document.getElementById("con_1");
var min = 0;
for (var i = 1; i <= 9; i++) {
for (var a = 1; a <= 9; a++) {
if(a <= min){
var numbox = document.createElement("div");
numbox.className = "numbox";
numbox.innerHTML = "";
con_1.appendChild(numbox);
}else{
var numbox = document.createElement("div");
numbox.className = "numbox";
res = i * a;
numbox.innerHTML = i + "*" + a + "=" + res;
con_1.appendChild(numbox);
}
}
min ++;
}
}
function con2(){
var res ;
var con_2 = document.getElementById("con_2");
var min = 0;
for (var i = 1; i <= 9; i++) {
for (var a = 9; a >= 1; a--) {
if(a > min){
var numbox = document.createElement("div");
numbox.className = "numbox";
res = i * a;
numbox.innerHTML = i + "*" + a + "=" + res;
con_2.appendChild(numbox);
}else{
var numbox = document.createElement("div");
numbox.className = "numbox";
numbox.innerHTML = "";
con_2.appendChild(numbox);
}
}
min ++;
}
}
function con3(){
var res ;
var con_3 = document.getElementById("con_3");
var min = 9;
for (var i = 9; i >= 1 ; i--) {
for (var a = 9; a >= 1; a--) {
if(a >= min){
var numbox = document.createElement("div");
numbox.className = "numbox";
res = i * a;
numbox.innerHTML = i + "*" + a + "=" + res;
con_3.appendChild(numbox);
}else{
var numbox = document.createElement("div");
numbox.className = "numbox";
numbox.innerHTML = "";
con_3.appendChild(numbox);
}
}
min --;
}
}
function con4(){
var res ;
var con_4 = document.getElementById("con_4");
var max = 9;
for (var i = 9; i >= 1 ; i--) {
for (var a = 1; a <= 9; a++) {
if(a >= max){
var numbox = document.createElement("div");
numbox.className = "numbox";
res = i * a;
numbox.innerHTML = i + "*" + a + "=" + res;
con_4.appendChild(numbox);
}else{
var numbox = document.createElement("div");
numbox.className = "numbox";
numbox.innerHTML = "";
con_4.appendChild(numbox);
}
}
max --;
}
}
</script>
<div id="reset">
<div class="name" >有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?</div>
<div class="content" id="re_res"></div>
</div>
<script>
function reset(){
var d = 0;
// 获取到内容区
var res = document.getElementById("re_res");
// 创建一个内容为1,2,3,4
var array = [1,2,3,4];
for(var i = 0; i <= 3; i++){
// 将array数组复制到arr1数组上
// 在这里不可以直接将array赋值给arr1,因为数组内部存储的是指针,直接赋值后,无论改动哪个数组中的内容,其实都是对同一组数据做改动
var arr1 = array.slice(0);
// 第一步中取出的数字赋值给变量h;
var h = arr1[i];
// 在数组arr1中删除arr[i],删除的长度为1;
arr1.splice(i,1);
for(var a = 0; a <= 2; a++){
// 将删除数据后的arr1数组复制给arr2
var arr2 = arr1.slice(0);
// 将第二步中取出的数字赋值给inl
var inl = arr2[a];
// 在数组arr2中删除选中的数字
arr2.splice(a,1);
for(var b = 0; b <= 1;b++){
// 将删除数据后的arr2数组复制给arr3
var arr3 = arr2.slice(0);
// 将第三步中取出的数字赋值给nth
var nth = arr3[b];
// 创建div盒子用于放置生成的三位数
var numberbox = document.createElement("div");
numberbox.className = "numberbox";
// 将三个步骤中选出的数字转为数组的形式并组成结果
var r = h.toString() + inl.toString() + nth.toString();
numberbox.innerHTML ='' + r;
// console.log( r);
// 将div盒子添加到内容区
res.appendChild(numberbox);
d ++;
}
}
}
var whole = document.createElement("div");
whole.className = "whole";
whole.innerHTML = "一共有" + d + "个三位数";
res.appendChild(whole);
}
</script>
<div id="sushu">
<div class="name" >判断101-200之间有多少个素数,并输出所有素数(只能被1和它本身整除的自然数为素数)</div>
<div class="content" id="con_ss"></div>
</div>
<script>
function sushu(){
var num = 0;
var content = document.getElementById("con_ss");
var flag = 1;
for (var i = 101; i <= 200; i++) {
for(var a = 2; a < (i - 1);a++){
if((i % a) == 0){
flag = 0;
break;
}else{
flag = 1;
}
}
// console.log(flag);
if(flag){
num++;
var numbox = document.createElement("div");
numbox.className = "numberbox";
numbox.innerHTML = i;
content.appendChild(numbox);
flag = 1;
num++;
}
}
var whole = document.createElement("div");
whole.className = "whole";
whole.innerHTML = "一共有" + num + "个素数";
content.appendChild(whole);
}
</script>
<div id="shuixianhua">
<div class="name" >打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方</div>
<div class="content" id="con_sxh"></div>
</div>
<script>
function shuixian() {
var w = 0;
var content = document.getElementById("con_sxh");
for (var i = 100; i < 1000; i++) {
var c = i % 10;
var a = parseInt(i / 100);
var b = ((i - c) / 10) - (a*10);
var num = a * a * a + b * b * b + c * c * c;
if(i == num){
var numbox = document.createElement("div");
numbox.className = "numberbox";
numbox.innerHTML = i ;
content.appendChild(numbox);
w++;
}
}
var whole = document.createElement("div");
whole.className = "whole";
whole.innerHTML = "一共有" + w + "个水仙花数";
content.appendChild(whole);
}
</script>
<div id="yinshu">
<div class="name">将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。</div>
<input type="number" id="in">
<input type="submit" value="提交" onclick="yinshu()">
<div class="content" id="con_ys"></div>
</div>
<script>
function yinshu() {
//获取元素
var con = document.getElementById("in");
var content = document.getElementById("con_ys");
// 获取输入的值
var num = con.value;
// 创建一个空数组以放置结果
var array = [];
// 创建一个判断值
var m;
// 创建一个判断值
var f = 0;
// 将输入的值转换为数字类型
var flag = +(num);
// 判断输入的值是否是数字&是否为正整数
console.log(num);
if (flag <= 0) {
alert("请输入一个正整数!")
}else{
// 判断输入的数字是否存在质因数
for(var i = 2 ; i < num ; i++){
if((num % i) == 0){
f = 1;
}
}
// 存在因数则进入循环语句
if(f){
for (var i = 0; i <= num; i++) {
for (var a = 2; a < num; a++) {
if(((num % a) == 0) && (m = 1)){
// 将符合条件的a添加进数组array
array.push(a);
num /= a;
// 设置判断值m为0
m = 0;
// 判断num被除后是否存在质因数,如果存在设m为1,不存在则设为0以进入下一步
for (var b = 2; b < num; b++) {
if ((num % b) == 0) {
m = 1;
}
}
// console.log(m);
// console.log(num);
console.log(array);
break;
}
}
// 因为m=0而进入下一步
if (!m) {
// 如果num此时不为1则将其添加进array数组
if(num != 1){
array.push(num);
// console.log(array);
}
// 对数组array进行冒泡排序
for(var i = 0;i < array.length; i++){
for(var j = i + 1;j <= array.length;j++){
if(array[i] > array[j]){
var x = array[i];
array[i] = array[j];
array[j] = x;
}
}
}
// 将数组以既定格式赋值给str
var str = flag + "=" +array[0].toString();
for (var i = 1; i < array.length; i++) {
str = str + "*" +array[i];
}
// console.log(str);
// 创建div用于放置str
var numberbox = document.createElement("div");
// 清空内容区
content.innerHTML = "";
// 给创建的div赋值
numberbox.innerHTML = str;
// 将创建的div盒子放入内容区
content.appendChild(numberbox);
// 中断循环
break;
}
}
//不存在质因数则直接报出结果
}else{
content.innerHTML = "";
alert(num + "没有质因数");
}
}
}
</script>
<div id="GCD_LCM">
<div class="name">求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM)</div>
<input type="number" id="in1">
<input type="number" id="in2">
<input type="button" value="提交" onclick="GL()">
<div class="content" id="con_GL"></div>
</div>
<script>
function GL() {
var content = document.getElementById("con_GL");
var num1 = document.getElementById("in1");
var num2 = document.getElementById("in2");
var n1 = +(num1.value);
var n2 = +(num2.value);
// 创建一个空变量用于交换数值
var z;
// console.log(n1);
// console.log(n2);
// 清空内容区
// console.log(typeof(n1));
// console.log(typeof(n2));
// 判断输入的值是否是正整数,如果不是正整数则弹出提示
if ((+(n1) <= 0) || (+(n2) <= 0)) {
alert("请输入两个的正整数!");
}else{
// 使n1始终大于n2
if(n2 > n1){
z = n1;
n1 = n2;
n2 = z;
}
// console.log(n1);
// console.log(n2);
// 求最大公因数
if((n1 % n2) == 0){
content.innerHTML = "";
var numberbox = document.createElement("div");
numberbox.innerHTML = n1 + "和" + n2 + "的最大公因数是:" + n2 + "<br>" + n1 + "和" + n2 + "的最小公约数是:" + n1;
content.appendChild(numberbox);
}else{
// 清楚内容区
content.innerHTML = "";
// 求最大公因数
for (var i = n2 - 1; i >= 1; i--) {
console.log(i);
console.log(n1 % i);
console.log(n2 % i);
if ( ((n2 % i) == 0) && ((n1 % i) == 0) ) {
var numberbox = document.createElement("div");
numberbox.innerHTML = n1 + "和" + n2 + "的最大公因数是:" + i;
content.appendChild(numberbox);
break;
}
}
// 求最小公约数
for (var i = n1; i <= (n1*n2); i++) {
if ( ((i % n1) == 0) && ((i % n2) ==0) ) {
var numberbox1 = document.createElement("div");
numberbox1.innerHTML = n1 + "和" + n2 + "的最小公约数是:" + i;
content.appendChild(numberbox1);
break;
}
}
}
}
}
</script>
<div id="wanquan">
<div class="name">求1000以内的完全数(若一个自然数,恰好与除去它本身以外的一切因数的和相等,这种数叫做完全数。</div>
<div class="content" id="con_wq"></div>
</div>
<script>
function wq() {
var res = [];
var content = document.getElementById("con_wq");
// 因为1的因数只有自身所以不符合条件因此循环可以从2开始
for (var i = 2; i <= 1000; i++) {
// 设置一个空数组用来存放数据,并初始化
var array = [];
// 设置变量num并初始化
var num = 0;
// 找出i的所有因数并将其添加进数组array中
for (var m = 1; m < i ; m++) {
if ((i % m) == 0) {
array.push(m);
// console.log(array);
}
}
// 求所有因数的和
for(var a = 0;a < array.length;a++){
num = num + array[a];
}
// 将因数和与i比较
if (i == num) {
res.push(i);
// console.log(num);
// console.log(i);
// console.log("是完全数");
// console.log(res);
}
}
for (var i = 0; i < res.length; i++) {
var numberbox = document.createElement("div");
numberbox.innerHTML = res[i];
content.appendChild(numberbox);
}
}
</script>
<script>
function result(){
jc();
jc2();
jc3();
con1();
con2();
con3();
con4();
reset();
sushu();
shuixian();
wq();
}
</script>
</body>
</html>
/* 10的阶乘 */
#jiecheng{
width: 1200px;
margin: 0 auto;
text-align: center;
}
#jiecheng div{
cursor: pointer;
height: 20px;
width: 300px;
line-height: 20px;
position: relative;
margin-top: 10px;
text-align: left;
}
#jiecheng div span{
display: block;
height: 20px;
line-height: 20px;
position: absolute;
right: 0;
bottom: 0;
}
/* 九九乘法表 */
#jiujiu{
width: 900px;
height: 500px;
margin: 0 auto;
}
.name{
text-align: center;
cursor: pointer;
}
#jiujiu .box{
width: 49%;
float: left;
}
#jiujiu .content{
height: 200px;
border: 1px solid black;
box-sizing: border-box;
padding: 5px;
}
#jiujiu .numbox{
width: 47px;
height: 20px;
line-height: 20px;
float: left;
text-align: left;
font-size: 14px;
}
/* 数字重组 */
.numberbox{
width: 50px;
height: 25px;
line-height: 25px;
text-align: 50px;
float: left;
/* background-color: #ccc; */
padding: 0 5px;
}
#reset .content{
width: 1200px;
height: 200px;
margin: 0 auto;
overflow: hidden;
/* background-color: yellow; */
}
.whole{
width: 1200px;
height: 50px;
font-size: 30px;
line-height: 50px;
text-align: center;
margin-top: 100px;
}
/* 判断素数 */
#sushu{
width: 1200px;
height: 190px;
margin: 0 auto;
/* background-color: #ccc; */
}
#sushu .content{
overflow: hidden;
}
/* 水仙花 */
#shuixianhua{
width: 1200px;
height: 200px;
margin: 0 auto;
}
#shuixianhua .content{
overflow: hidden;
}
/* 分解因数 */
#yinshu{
width: 1200px;
height: 200px;
margin: 0 auto;
}
#yinshu .content{
overflow: hidden;
}
/* 公约数和公因数 */
#GCD_LCM{
width: 1200px;
height: 200px;
margin: 0 auto;
}
#GCD_LCM .content{
overflow: hidden;
}
/* 完全数 */
#wanquan{
width: 1200px;
height: 200px;
margin: 0 auto;
}
#con_wq{
margin: 0 auto;
width: 1200px;
height: 200px;
overflow: hidden;
}
#con_wq div{
float: left;
width: 50px;
height: 20px;
}