复习--js基础之一些经典的算法

刚刚开始接触学习javaScript的小白一个,写这些东西只是为了当做笔记一样的东西,如果有哪些地方有不太对的,或者理解有问题的,希望各位大神指点,谢谢。

开始正文

js基础之一些比较经典的入门算法。。

1、求出1-1/2+1/3-1/4……+1/9-1/100的和。

var sum=0;
var index=1;
for(var i=1;i<=100;i++){
	if(i%2==0){
		sum+=-1/i;
	}else{
		sum+=1/i;
	}
	sum+=index/i;
	index*=-1;
}
console.log(sum);

2、打印100~999之间的水仙花数水仙花数是一种特殊的三位数,它的特点就是,每个数位的立方和,等于它本身。比如 153 就是水仙花数。因为:
1* 1 *1 + 5 * 5 * 5+3 * 3 * 3=153
100~999 之内,只有 4 个水仙花数,请找出来。

for(var i=100;i<1000;i++){
	var sum=0;
	var g=i%10;
	var s=parseInt(i/10)%10;
	var b=parseInt(i/100);
	
	sum=Math.pow(g,3)+Math.pow(s,3)+Math.pow(b,3);
	if( sum == i ){
		console.log( i+"是一个水仙花数");
	}
}

3、求1!+2!+3!+…+20!的值

var fac=1;
var sum=0;
for( var i = 1;i< =20; i++){
	fac*=i;
	sum+=fac;
}
console.log(sum);

4、输入一个数 输出这个数的因数

function box(num){
	for( var i=1;i<=num;i++){
		if( num%i==0){
			console.log(i);
		}
	}
}
box(num);

5、判断一个数是否是:素数 (质数):只能被1和其本身整除的数。

方案一:只有两个因子(计算因子的个数是否为2,如果是个数2,说明是素数)

function isPrime(num){
	var count=0;
	for( var i=1 ; i<=num ; i++){
		if( num % i ==0){
			count++;
		}
	}
	if( count == 2){
		console.log( num + " 是素数 ");
	}else{
		console.log( num + " 不是素数 ");
	}
}
isPrime( num );

方案二: 因子之和 == 该数 + 1

function isPrime(num){
	var sum = 0;
	for (var i = 1; i <= num; i++) {
		if(num % i == 0){
	  		sum += i;
	  	}
	}
	  	if(sum == num+1){
	  		console.log(num + "是素数");
	  	}else{
	  		console.log(num + "不是素数");
	  	}
}
isPrime(4);

方案三:通过一个开关变量控制该数是否是素数(这个是比较重要的一种方法)

function isPrime(num){
	var flag = true;//表示这个数是一个素数
	for (var i = 2; i < num; i++) {
		if(num % i == 0){
			flag = false;
			break;
		}
	}
		if(flag){
			//是一个素数
			alert(num + "是一个素数");
		}else{
			alert(num + "不是一个素数");
		}
}
isPrime(sum);

方案三还可以简化成这样

function isPrime(num){
	for (var i = 2; i < num; i++) {
		if(num % i == 0){
			return false;
		}
	}
	return true;
}

6、输出:100可以拆成哪两个素数的和

for (var i = 2; i <= 50; i++) {
	if(isPrime(i)){		//这里的isPrime就是调用之前我们的判断素数的那个函数了
		if(isPrime(100-i)){
			console.log(i + "和" + (100-i));
		}
	}
}

7、如果一个数恰好等于它的因数之和,则称该数为“完全数” perfect number。

//判断一个数是否是完全数
function isPerfectNum(num){
	var sum = 0;
	for (var i = 1; i < num; i++) {
		if(num % i == 0){
			sum += i;
		}
	}
		if(sum == num){
			return true;
		}
		return false;
}
//输出完全数
function geetAllPerfectNum(){
	for (var i = 2; i <= 10000; i++) {
		if(isPerfectNum(i)){
			console.log(i);
		}
	}
}
geetAllPerfectNum();

8、3.编写一个函数 :实现计算任意一个数的各个 位数的和。
例如 : 234 位数和为 9。

function fn(m){
 	var sum=0;
 	while(m!=0){		//用while的话就不需要判断这个数的长度			
		sum+=(m%10);
 		m=parseInt(m/10);
 	}
 	return sum;
}
document.write(fn(123));

今天就先到这里吧,都是一些自己学习的时候整理的东西,有些方法看起来可能还不是那么简便,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值