特殊的数

你听过一些特殊的数码,如:独身数, 水仙花数, 四叶玫瑰数, 五角星数, 六合数 ,北斗×××数,  八仙数, 九九重阳数 ,十全十美数。说到这你是否和我当初一样好奇呢,这是什么数呢!总的概括就是他们每位数的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

特殊的数独身数,:水仙花数, 四叶玫瑰数, 五角星数, 六合数 ,北斗七星数, 八仙数, 九九重阳数 ,十全十美数...相关推荐

  1. Python练习:四叶玫瑰数求解

    描述 四叶玫瑰数是4位数的自幂数.自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身.(例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂 ...

  2. Java 输出四叶玫瑰数

    列举所有的"四叶玫瑰数",并统计四叶玫瑰数的个数 四叶玫瑰数:是一个四位数,各数制位上的数字的四次方的和等于该数字本身 举例: int sum = a * a * a * a + ...

  3. 判断一个数是否为四叶玫瑰数_python

    python编写,课堂练习 # @DATE : 2020/9/8 # @TIME : 08,17,31 # @USER : win10 # @WRITEN BY : ice_stone # 判断是否为 ...

  4. @18. 自幂数、水仙花数、四叶玫瑰数等等是什么?

      求水仙花数是计算机编程语言学习过程中常见的一个题目,类似的还有自幂数.四叶玫瑰数等等.这期来说一下,这些词都是什么意思,彼此之间是什么关系.   先来说一个名词,自幂数.自幂数是指一个 n 位数, ...

  5. python求解水仙花数和四叶玫瑰数

    1,水仙花数是指三位数中的某一个数等于该数每个 位上的数字的三次方之和.如 153 =1 ^ 3+ 5 ^ 3 + 3 ^ 3 for i in range(100,1000): a = i // 1 ...

  6. 判断任意控制台输入的十进制数是否为水仙花数

    关于水仙花数在前面一篇中已经有介绍,判断任意控制台输入十进制数是否为水仙花数(C++) 以下为Java代码 import java.util.Scanner;public class Amstrong ...

  7. 让用户输入一个三位数(若不是三位数则提示错误),判断该数是否是水仙花数。(水仙花数:每一位上的数字的立方和,等于该数本身)

    import java.util.Scanner; public class Test {public static void main(String[] args){/*让用户输入一个三位数(若不是 ...

  8. 四叶玫瑰花数java代码_Java 循环语句 四叶玫瑰数,奇数偶数求和

    课堂练习 :自己写的: class Demo_四叶玫瑰数{ public static void main(String[] args) { for(int i = 1000; i<=9999 ...

  9. python四叶玫瑰数,任意位数自幂数寻找|Python练习系列[4]

    自幂数是指一个n位数,它的每个位上的数字的n次幂之和等于它本身 自幂数包括:独身数.水仙花数.四叶玫瑰数.五角星数.六合数.北斗七星数.八仙数.九九重阳数.十全十美数 任意位数自幂数寻找完整代码和注释 ...

最新文章

  1. 创业者应该如何看待金钱
  2. html怎么样取jsp中的路径,jsp中获得路径的两种方法和获得url路径的方法(推荐)
  3. using namespace cv_闪耀暖暖万圣节非凡魔女南瓜套公开 消耗钻石获取 大喵无CV
  4. NodeJS仿WebApi路由
  5. 【离散数学】数理逻辑 第一章 命题逻辑(1) 命题和联结词
  6. 如何给证件照换一个背景颜色
  7. [技术]使用人工智能玩微信跳一跳
  8. 通过智能一体化管理系统自定义表单和自定义字段设计
  9. Python中文全攻略 中文乱码 输出中文乱码
  10. Servlet的使用(2198)
  11. Kubernetes:开源 K8s 管理工具 Rancher 认知
  12. 2022G3锅炉水处理特种作业证考试题库及答案
  13. Hyperledger Fabric 1.0 快速搭建 -------- 多机部署 Fabric CA节点服务
  14. java 画数学函数图
  15. 裁员滚滚,这个冬天有点冷 | 程序员有话说
  16. 华科网安学院和计算机学院,武大华科顶尖网络高手聚集到一起,国家网安学院迎来首批学子入学...
  17. Pin To Taskbar
  18. 自学python 编程基础知识_自学Python的学习顺序,知识要点!附学习资料
  19. SQL Serve [SQL Server无法连接到服务器]标题: 连接到服务器-无法连接到。 ---解决方法
  20. linux查看端口有多少连接,Linux查看端口的连接数

热门文章

  1. python加mysql加界面用代码写_python加mysql_python操作mysql
  2. win10/11 亮度调节拖动条消失的问题
  3. Gremlin 基础知识
  4. 忽视显而易见的东西:差分放大器的输入阻抗
  5. ofo 上海深圳等公司相继注销
  6. 职业能力测试之逻辑(一)
  7. 基于ssm小说阅读安卓APP项目
  8. Xposed模块APP代码混淆
  9. SSTI 模板注入url_for和get_flashed_messages之[WesternCTF2018]shrine
  10. 一名中专生的坎坷程序人生