一个js函数算出任意位数的水仙花数
一个算出任意位数的水仙花数的函数如下:
不过百度上说。。
不过不管了,要的就是一式多用的功能就行了。
推导过程如下:
通常我们求三位数的水仙花是这么算的
for(var i = 100; i < 1000; i++){
//百位
var a = Math.floor(i / 100);
// 十位
var b = Math.floor((i - a * 100)/10);
// 个位
var c = i % 10;
if(Math.pow(a,3) + Math.pow(b,3) + Math.pow(c,3) === i){
console.log(i+'是一个水仙花数');
}
}
这样的做法似乎没有什么规律,那就先求个位,再求十位,百位
于是就改成了这样(把循环和累加省掉了)
//个位
ge = num%10;
// 十位
shi = Math.floor(num / 10) %10;
// 百位
bai = Math.floor(num / 100);
也就等价于
//个位
ge = num%10;
// 十位
shi = Math.floor(num / 10) %10;
// 百位,百位/100后余10即等于本身,因为除了100且化为整数之后只剩个位数,个位对10取余依旧是自己
bai = Math.floor(num / 10/10) % 10;
也就是一直在对10取余之后除以10再对10取余,
而取余出来时的数为我们所要的个、十、百。。等位数
除以十则是一直在循环除以同一个数
那自然取余的数用数组存取,
而这个用来除以10的数则是循环累除,直至小于1
于是得到
var arr =[];
/*更改num确定取值范围*/
for(var num = 100; num <= 9999;num++){
/*多位数版本*/
var i = 0;
/*设置一个数用来存储变量num*/
var suan = num; do{
/*取出个位*/
arr[i] = suan%10;
/*去掉“个位”*/
suan = Math.floor(suan/ 10) ;
i++;
}while(suan >= 1 ) var sum = 0;
for(var i=0;i<arr.length;i++)
{
/*累加各个数字的n次幂(n为数字的位数,如100为3,1000为4)*/
sum+= Math.pow(arr[i],arr.length);
}
if(sum == num){
console.log(num);
}
}
一个js函数算出任意位数的水仙花数的更多相关文章
- 打印出三位数的水仙花数Python
水仙花数计算 ...
- 【C语言】创建一个函数,判断某一正整数是否为水仙花数,并调用这个函数找出1000以内所有水仙花数
#include <stdio.h> int fun(int x) { int a, b, c; a = x / ; b = x % / ; c = x % ; if (x == a * ...
- 给定一个英文字符串,请编写一个PHP函数找出这个字符串中首先出现三次的那个英文字符(需要区分大小写),并返回
给定一个英文字符串,请编写一个PHP函数找出这个字符串中首先出现三次的那个英文字符(需要区分大小写),并返回 //统计字符串中出现的字符的出现次数 public function strNum(){ ...
- python 求3到8位数的水仙花数Pycharm实现
#-*- coding: utf-8-*-import timeimport math#获取3位数的水仙花数start1 = time.time()start = time.time() number ...
- 【原创】贡献一个JS的弹出框代码...
一.前言 最近在做一个项目,自己感觉系统自带的alert()方法的弹出框实在是不堪入目,所以在网上找了一些资料,然后自己加工了一下,做出了自己的一个js弹出框,在这里贡献出来,希望对你有帮助. 二.开 ...
- 用Java编程计算出所有的"水仙花数"
题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个 "水仙花数 ",因 ...
- 【C语言】(for循环嵌套)找出1000以内的水仙花数
什么是水仙花数? 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153). 分析: 根据定义可知: a*a*a+b*b*b+c*c*c ...
- 【C语言】找出1000以内的水仙花数
什么是水仙花数? 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153). 代码1: #include<stdio.h> ...
- 在一个页面重复使用一个js函数的方法
给每个拥有相同行为的问题DOM节点一个相同的class类,如question,同时给不同的问题一个不同的标识ID如 id="question1" id="question ...
随机推荐
- Zabbix自动发现并监控磁盘IO、报警
本文转载自: https://www.93bok.com 引言 Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个,由于一台服务器中磁盘众多,如果只有一两台可以手动添加,但服务 ...
- fsLayuiPlugin联动表格使用(一)
简单联动表格使用 点击主表格,加载副表格数据, 演示地址:http://fslayuiplugin.fallsea.com/views/linkageDatagrid/index.html 联动表格配 ...
- 前端AES加密解密
最开始使用的aes-js的npm包,后来发现npm上面那个包只能加密16个长度的字节,非16个长度的字符串就会报错,后来使用的是crypto-js, AES总共有四种加密方式,我们使用的CBC方式: ...
- 基于VR三维全景的虚拟展馆展览实现
VR三维全景虚拟现实技术的应用,能够通过全方位互动式来还原真实场景,令人产生一种身临其境的感觉,由于三维全景虚拟现实技术具有一定应用优势,其在企业与院校展示.建筑规划展示.酒店宾馆展示等方面都逐步得到 ...
- 鸟哥的Linux私房菜基础学习篇(第三版)——阅读笔记(二)
第一章 Linux是什么 1.Linux是什么 一套操作系统 早期的Linux是针对386开发的 具有可移植性 2.Unix及Linux的发展史 1973年,Unix诞生,Ritchie等人以C语言写 ...
- Mozilla的 Firefox Graphics 团队向社区寻求重现WebRender bug的方法
导读 Mozilla 的 Firefox Graphics 团队正在向社区寻求帮助,由于他们收到了一些随机发生的 UI 错误报告,却一直无法找出错误的重现步骤(STR),因此现在向外寻求社区用户的帮助 ...
- 用shell脚本实现定时备份数据库
1.备份数据库的方法 可以使用命令查看 ls /usr/local/mysql/bin 这个mysqldump就是系统内置的用来备份数据库的工具. 2.实现方法 ①先随便进入一个位置创建一个目录 ② ...
- List remove ConcurrentModificationException源码分析
代码块 Java Exception in thread "main" java.util.ConcurrentModificationException at j ...
- 问题描述:判断一个整数 n 是否为 2 的幂次方
一.2的幂次方的基本定义 什么样的数为2的幂次方?例如2^0=1,2^1=2,2^2=4……,符合公式2^n(n>=0)的数称为2的幂次方. 如何判断一个数是否为2的幂次方呢?基本思路:把一个数 ...
- css中:link和@import的区别
两者都是外部引用css的方式.但是有一定的区别: 1. 从属关系:link是一个xhtml标签,除了加载css外,还可以定义 RSS.rel 连接属性等: @import属于css范畴,只能加载css ...