一个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 ...
随机推荐
- python之面向对象02
在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做“魔法”方法 1. __init__()方法 class Cat: def __init__(self,newname, ...
- 读书笔记-《Mysql技术内幕》
MYSQL 技术内幕 Mysql体系 连接池组件 管理服务和工具 SQL接口 查询分析器 优化器 缓冲 插件式存储引擎 物理文件 存储引擎 InnoDB(默认引擎) 支持事务 行锁设计 多版本并发控制 ...
- 从头认识js-DOM1
前面说过一个完整的js实现,包括ECMAScript,BOM,DOM三部分,现在就来讲讲DOM的有关知识. DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口).DOM描绘来一 ...
- PHP时区转换(默认中国时区<Asia/Shanghai>转意大利时区<Europe/Rome>)
<?php function changeTimeZone($date_time, $format = 'Y-m-d H:i:s', $to = 'Europe/Rome', $from = ' ...
- html建立大众点评页面遇到的问题
大众点评所用知识 HTML.CSS.bootstrap3 遇到的问题 因图片无法对齐 源码:抛弃div改用img后成功对齐 解决后成功对齐 源码: 导航栏文本无法右对齐. 我想到的方法是: div{ ...
- almost最好的Vue + Typescript系列02 项目结构篇
基于vue-cli 3.x,配合typescript的环境构建的新vue项目,跟以前的结构相比,有了一些变化,下面我们来简单的了解一下 基本结构: node_modules: 项目中安装的依赖模块 p ...
- 数据加密标准(DES)详解
1 简介 1.1 历史 DES(Data Encryption Standard)是由IBM公司在1974年提出的加密算法,在1977年被NIST定位数据加密标准.随后的很多年里,DES都是最流行的对 ...
- python自动化第一课 - python安装以及pycharm配置
1.安装python 1.1打开python官网https://www.python.org/downloads/windows/进行下载Python 3.8.0 1.2下载完毕后进行安装,1勾选 A ...
- nginx显示静态html爆502 bad gateway的错误提示
在centos的服务器上,没有启动php-fcgi. 本来是想设置显示一个静态文件目录的,用不着php,于是就关闭了php-fcgi. 结果打开爆了一个大大的nginx502 bad gateway的 ...
- activiti设置customSessionFactories时的一个小坑
现象:activiti设置customSessionFactories不起作用,流程还是走原来的查询方法原因:新实现的XXXEntityManagerFactory的getSessionType方法返 ...