特殊的数独身数,:水仙花数, 四叶玫瑰数, 五角星数, 六合数 ,北斗七星数, 八仙数, 九九重阳数 ,十全十美数...
特殊的数
你听过一些特殊的数码,如:独身数, 水仙花数, 四叶玫瑰数, 五角星数, 六合数 ,北斗×××数, 八仙数, 九九重阳数 ,十全十美数。说到这你是否和我当初一样好奇呢,这是什么数呢!总的概括就是他们每位数的n次方的和等于他们本身。具体几次方要看他们有几位数了。
列如:
独身数
1到9,都是一位数那么他们每个数的1次方都等于他们本身,当然2位数的没有;
水仙花数
任意的3位数他们每个数的3次方的和相加等于他们自身;
四叶玫瑰数
任意的4位数他们每个数的4次方的和相加等于他们自身;
....................................................................................................
一次类推了一直到10,也就是到十全十美数
到此,知道只是知道而已,怎样通过运算快速的把他们找出来,这就要我们利用计算机运算我们写的JavaScript代码来实现了,呵呵我的计算机算到9位已经很吃力了!
现在就就开始一步一步探索吧...............
思路是这样的:比如我们通过循环语句找到一个三位数236,我们要通过函数分别取出2 3 6,然后分别3次方得到3个数,再把他们相加得到一个和,最后再使用逻辑语进行判断是否和他们自身相等即可,
我们先从找到水仙花数,然后类比去找其他的数,当然也可以是其他的数
// 因为水仙花数是三位数,所以可以从100开始赋值
for(var number=100;number<1000;++number)
{
// 把每次循环变动的number赋值给ys
var ys=number;
// 通过取余函数取出个位上的数
var ge=ys%10;
// 对一个数下舍入函数去掉个位上的数,此时变成一个两位数了
var ys=Math.floor(ys/10);
// 通过取余函数取出个位上的数,即原先三位数十位上的数
var shi=ys%10;
// 对一个数下舍入函数去掉个位上的数,此时变成一个一位数了
var ys=Math.floor(ys/10);
// 通过取余函数取出个位上的数,即原先三位数百位上的数
var bai=ys%10;
// 对一个数下舍入函数去掉个位上的数,此时变成0了说明这个三数已经取完了
var ys=Math.floor(ys/10);
// 通过 Math.pow()分别求出每位数的3次方,再让他们相加求和
var he=Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3);
// 用逻辑语句if判断他们的 和 是否与自身相等
if(number==he)
{
document.write(number);
document.write('<br>');
}
}
运行结果为 153 370 371 407
到这里我们已经算出了水仙花数了 接下来要做的事就是把写的代码找出规律,然后把规律相同的地方用上循环语句
上面的一句
var he=Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3);
可以分成
Var he;
he+=Math.pow(gei,3); == he=he+Math.pow(gei,3);
he+=Math.pow(shi,3); == he=he+Math.pow(gei,3);
he+=Math.pow(bai,3); == he=he+Math.pow(gei,3);
这里的变量ge shi bai 可以用一个变量代替,然后用循环叠加的方法表示出来,比如用变量wei
此时的代码为
for(var number=100;number<1000;++number)
{
var ys=number;
var he;
var wei;
var wei=ys%10;
var ys=Math.floor(ys/10);
he+=Math.pow(wei,3);
var wei=ys%10;
var ys=Math.floor(ys/10);
he+=Math.pow(wei,3);
var wei=ys%10;
var ys=Math.floor(ys/10);
he+=Math.pow(wei,3);
if(number==he)
{
document.write(number);
document.write('<br>');
}
}
这样我们就能看出
var wei=ys%10;
var ys=Math.floor(ys/10);
he+=Math.pow(wei,3);
三个部分是相等的,所以可以使用循环语句for进一步简化为
for(var number=100;number<1000;++number)
{
var ys=number;
var he=0;
var wei=0;
for(i=1;i<=3;++i)
{
var wei=ys%10;
var ys=Math.floor(ys/10);
he+=Math.pow(wei,3);
}
if(number==he)
{
document.write(number);
document.write('<br>');
}
}
到这里求出水仙花数的代码已经简化完毕了,接下来要做的事情就是给一个函数方法,通过分析让他输出其他特殊的数!
我们先来分析
独身数:是一个一位数的数所以他自身的一次方还是他自身 取值为1到9
水仙花数:是一个三位数所以取值为100到999
四叶玫瑰:是个四位数所以取值为1000到9999
五角星数:是一个五位数所以取之为10000到99999
.............................................................................................................................
同理到
十全十美:是一个十位数取值为1000000000到9999999999
然后中间循环的部分,是几位数就循环几次
分析完了我们用一个方法函数function
代码为:
function specialNumber(huashu)
{
// 为了更加直观可以定义一个数组来说明输出的为那个特殊数
let numberNameList =[
'独身数','没有','水仙花数','四叶玫瑰数', '五角星数',
'六合数','北斗×××数','八仙数','九九重阳数','十全十美数'
];
// 输出对应的特殊数字的名称 例如:水仙花数
document.write( numberNameList[ huashu-1 ] + ":<br>" );
// 定义各个特殊数的取值范围
for(var number=Math.pow(10,huashu-1);number<Math.pow(10,huashu);++number)
{
var ys=number;
var he=0;
var wei=0;
// 各个特殊数循环的次数
for(var i=1;i<=huashu;++i)
{
var wei=ys%10;
var ys=Math.floor(ys/10);
he+=Math.pow(wei,huashu);
}
if(number==he)
{
document.write(number);
document.write('<br>');
}
}
}
specialNumber(3);
现在就可以在specialNumber();的括号里去填写1到10去寻找你想知道的特殊数了,这里用的JavaScript写的我的电脑只运行到9位就吃不住了,如果php写执行率会高好多!
转载于:https://blog.51cto.com/wwwlyl/1928399
特殊的数独身数,:水仙花数, 四叶玫瑰数, 五角星数, 六合数 ,北斗七星数, 八仙数, 九九重阳数 ,十全十美数...相关推荐
- Python练习:四叶玫瑰数求解
描述 四叶玫瑰数是4位数的自幂数.自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身.(例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂 ...
- Java 输出四叶玫瑰数
列举所有的"四叶玫瑰数",并统计四叶玫瑰数的个数 四叶玫瑰数:是一个四位数,各数制位上的数字的四次方的和等于该数字本身 举例: int sum = a * a * a * a + ...
- 判断一个数是否为四叶玫瑰数_python
python编写,课堂练习 # @DATE : 2020/9/8 # @TIME : 08,17,31 # @USER : win10 # @WRITEN BY : ice_stone # 判断是否为 ...
- @18. 自幂数、水仙花数、四叶玫瑰数等等是什么?
求水仙花数是计算机编程语言学习过程中常见的一个题目,类似的还有自幂数.四叶玫瑰数等等.这期来说一下,这些词都是什么意思,彼此之间是什么关系. 先来说一个名词,自幂数.自幂数是指一个 n 位数, ...
- python求解水仙花数和四叶玫瑰数
1,水仙花数是指三位数中的某一个数等于该数每个 位上的数字的三次方之和.如 153 =1 ^ 3+ 5 ^ 3 + 3 ^ 3 for i in range(100,1000): a = i // 1 ...
- 判断任意控制台输入的十进制数是否为水仙花数
关于水仙花数在前面一篇中已经有介绍,判断任意控制台输入十进制数是否为水仙花数(C++) 以下为Java代码 import java.util.Scanner;public class Amstrong ...
- 让用户输入一个三位数(若不是三位数则提示错误),判断该数是否是水仙花数。(水仙花数:每一位上的数字的立方和,等于该数本身)
import java.util.Scanner; public class Test {public static void main(String[] args){/*让用户输入一个三位数(若不是 ...
- 四叶玫瑰花数java代码_Java 循环语句 四叶玫瑰数,奇数偶数求和
课堂练习 :自己写的: class Demo_四叶玫瑰数{ public static void main(String[] args) { for(int i = 1000; i<=9999 ...
- python四叶玫瑰数,任意位数自幂数寻找|Python练习系列[4]
自幂数是指一个n位数,它的每个位上的数字的n次幂之和等于它本身 自幂数包括:独身数.水仙花数.四叶玫瑰数.五角星数.六合数.北斗七星数.八仙数.九九重阳数.十全十美数 任意位数自幂数寻找完整代码和注释 ...
最新文章
- 创业者应该如何看待金钱
- html怎么样取jsp中的路径,jsp中获得路径的两种方法和获得url路径的方法(推荐)
- using namespace cv_闪耀暖暖万圣节非凡魔女南瓜套公开 消耗钻石获取 大喵无CV
- NodeJS仿WebApi路由
- 【离散数学】数理逻辑 第一章 命题逻辑(1) 命题和联结词
- 如何给证件照换一个背景颜色
- [技术]使用人工智能玩微信跳一跳
- 通过智能一体化管理系统自定义表单和自定义字段设计
- Python中文全攻略 中文乱码 输出中文乱码
- Servlet的使用(2198)
- Kubernetes:开源 K8s 管理工具 Rancher 认知
- 2022G3锅炉水处理特种作业证考试题库及答案
- Hyperledger Fabric 1.0 快速搭建 -------- 多机部署 Fabric CA节点服务
- java 画数学函数图
- 裁员滚滚,这个冬天有点冷 | 程序员有话说
- 华科网安学院和计算机学院,武大华科顶尖网络高手聚集到一起,国家网安学院迎来首批学子入学...
- Pin To Taskbar
- 自学python 编程基础知识_自学Python的学习顺序,知识要点!附学习资料
- SQL Serve [SQL Server无法连接到服务器]标题: 连接到服务器-无法连接到。 ---解决方法
- linux查看端口有多少连接,Linux查看端口的连接数