一个算出任意位数的水仙花数的函数如下:

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);
}
}
 

不过百度上说。。

水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
附:其他位数的自幂数名字
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数

不过不管了,要的就是一式多用的功能就行了。

推导过程如下:

通常我们求三位数的水仙花是这么算的

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函数算出任意位数的水仙花数的更多相关文章

  1. 打印出三位数的水仙花数Python

    水仙花数计算 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪ ...

  2. 【C语言】创建一个函数,判断某一正整数是否为水仙花数,并调用这个函数找出1000以内所有水仙花数

    #include <stdio.h> int fun(int x) { int a, b, c; a = x / ; b = x % / ; c = x % ; if (x == a * ...

  3. 给定一个英文字符串,请编写一个PHP函数找出这个字符串中首先出现三次的那个英文字符(需要区分大小写),并返回

    给定一个英文字符串,请编写一个PHP函数找出这个字符串中首先出现三次的那个英文字符(需要区分大小写),并返回 //统计字符串中出现的字符的出现次数 public function strNum(){ ...

  4. python 求3到8位数的水仙花数Pycharm实现

    #-*- coding: utf-8-*-import timeimport math#获取3位数的水仙花数start1 = time.time()start = time.time() number ...

  5. 【原创】贡献一个JS的弹出框代码...

    一.前言 最近在做一个项目,自己感觉系统自带的alert()方法的弹出框实在是不堪入目,所以在网上找了一些资料,然后自己加工了一下,做出了自己的一个js弹出框,在这里贡献出来,希望对你有帮助. 二.开 ...

  6. 用Java编程计算出所有的"水仙花数"

    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个 "水仙花数 ",因 ...

  7. 【C语言】(for循环嵌套)找出1000以内的水仙花数

    什么是水仙花数? 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153). 分析: 根据定义可知: a*a*a+b*b*b+c*c*c ...

  8. 【C语言】找出1000以内的水仙花数

    什么是水仙花数? 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153). 代码1: #include<stdio.h> ...

  9. 在一个页面重复使用一个js函数的方法

    给每个拥有相同行为的问题DOM节点一个相同的class类,如question,同时给不同的问题一个不同的标识ID如 id="question1" id="question ...

随机推荐

  1. 7-7 jmu_python_是否是数 (10 分)

    本题要求从键盘输入一个字符串,判断该串是否属于整数.浮点数或者复数的表示 输入格式: 输入一个字符串 输出格式: 输出yes或no 输入样例: -299 输出样例: yes a = input() t ...

  2. 一文快速入门Shell脚本_了解Sheel脚本基本命令

    通过代码和注释的形式,列举了shell的基础操作,快速入门.shell在线编辑器 注释 单行用#号:多行::<<' 多行注释... '.:<<a 多行注释... a.:< ...

  3. volatile关键字的理解

    volatile是java语言提供的一种稍弱的同步机制,它的作用是能够保证被volatile修饰的变量,每个线程在获取它的值时都能获取到最新的值. 要理解这个原理首先要知道java内存模型:每个线程都 ...

  4. Jave基本数据类型

    基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型.它们是我们编程中使用最频繁的类型,因此面试题中也总少不了它们的身影,在这篇文章中我们将从面试中常考的几个方面来回顾一下与基本类型相关的知识. ...

  5. 用户HTTP请求过程简单剖析

    用户终端(如电脑浏览器)发起某个url请求,如http://www.baidu.com/1.jpg. 1.电脑首先会对www.baidu.com进行解析请求,获得域名对应的服务器IP. 2.电脑对服务 ...

  6. ZipArchive(解压文件)

    一.首先介绍minizip 的使用方法 ziparchive是基于开源代码”MiniZip”的zip压缩与解压的Objective-C 的Class,使用起来非常的简单方法:从http://code. ...

  7. ARC中__bridge, __bridge__transfer, __bridge_retained 关系

    总结于 IOS Tuturial 中 ARC两章,详细在dropbox pdf 文档. Toll-Free Bridging 当你在 Objective-C 和 Core Foundation 对象之 ...

  8. postman小工具

    进入lmm后,做接口测试使用的是postman,以前稍微接触过,但是不是很会用,这里就自学顺便总结一下,以便以后或者能帮助到别人,如果有什么不同的意见或者有错误,请毫不客气的指出,感谢! 推荐一篇博客 ...

  9. go-admin基于Gin + Vue + Element UI的前后端分离权限管理系统

    ✨ 特性 遵循 RESTful API 设计规范 基于 GIN WEB API 框架,提供了丰富的中间件支持(用户认证.跨域.访问日志.追踪ID等) 基于Casbin的 RBAC 访问控制模型 JWT ...

  10. 使用 notepad 正则转换 字符串

    一..在一堆字符串中找出某一个特定格式的字符串,例如如下 需要摘出 WMID_abc WMID_def WMID_ghi {"abc",WMID_abc,oid_abc} {&qu ...