“水仙花数”与变种“水仙花数”
目录
一.水仙花数
1.什么是水仙花数
2.设计要求
3.思路
4.分析
5.代码源
二、变种“水仙花数”
1.什么是变种“水仙花数”
2.设计要求
3.思路
4.代码源
一.水仙花数
1.什么是水仙花数
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身。
如 : 153=1 ^ 3+5 ^ 3+3 ^ 3,则153是一个“水仙花数”。
2.设计要求
求出0~100000之间的所有“水仙花数”并输出。
3.思路
给定一个数据data,求取data是几位数,获取data中每个位置上的数据,利用pow函数进行次方运算,并求和,若求和结果与data元素本身相等,则为水仙花数,否则,不是。
1.计算数据num的个位数,并将其赋值给temp。
2.计算个位数的n次幂,并累加到sum中。
3.移位操作,将num减去个位数temp后,再除10,便相当于数据的右移操作。此时减少一位,并将
结果重新赋值给num。
4.重复步骤(1)的操作,直到所有的位数都得到处理为止。
4.分析
1.给定一个数,求这个数的位数
利用给个数除以10,得到比这个数低一位的数来计算这个数有多少位。
例:1是由1位数字组成,12是由2位数字组成,123是由3位数字组成。
1:1/10=0(结束)
1由1位数字组成
12:12/10=1
1/10=0(结束)
12由2位数字组成
123:123/10=12
12/10=1
1/10=0(结束)
while (tmp / 10)
{count++;tmp = tmp / 10;
}
2.计算每一位数
该数字连续模10和除以10即可得到每一位。
while (tmp)
{n = tmp % 10tmp = tmp / 10;
}
3.计算每一位的n次方和
这里我们运用pow来求次方数;
必须加入头文件:#include <math.h>
pow(a, b);//计算a的b次方
#include <math.h>
while (tmp)
{sum += pow(tmp % 10, count);tmp = tmp / 10;
}
5.代码源
#include <stdio.h>#include<math.h>int main()
{int i = 0;for (i = 0; i <= 999999; i++){int count = 1;int tmp = i;int sum = 0;//判断i是否为水仙花数//1. 求判断数字的位数while (tmp / 10){count++;tmp = tmp / 10;}//2. 计算每一位的次方和tmp = i;while (tmp){sum += pow(tmp % 10, count);tmp = tmp / 10;}//3. 判断if (sum == i)printf("%d ", i);}return 0;
}
二、变种“水仙花数”
1.什么是变种“水仙花数”
变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。
例如:
655 = 6 * 55 + 65 * 5
1461 = 1*461 + 14*61 + 146*1
求出 5位数中的所有 Lily Number。
2.设计要求
输入描述:
无
输出描述:
一行,5位数中的所有 Lily Number,每两个数之间间隔一个空格。
3.思路
以此为例讲解变种水仙花数(1461 = 1*461 + 14*61 + 146*1)
我们都知道%10能求出一个数的一位,/10能去掉一位。
146(1461/10) 1(1461%10)
14(1461/100) 61(1461%100)
1(1461/1000) 461(1461%1000)
4.代码源
#include <stdio.h>
int main()
{int i = 0;for(i=10000; i<=99999; i++){//判断i是否为lily numberint j = 10;int sum = 0;int tmp = i;for(j=10; j<=10000; j*=10){sum += (tmp%j)*(tmp/j);}if(sum == i)printf("%d ", i);}return 0;
}
“水仙花数”与变种“水仙花数”相关推荐
- 水仙花数和变种水仙花数
水仙花数 描述 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: "水仙花数"是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+ ...
- 水仙花数 与 变种水仙花数 的求解 【C语言】
目录 水仙花数 变种水仙花数 水仙花数 简介:水仙花数是自幂数中的一种,三位自幂数又被称为水仙花数. 补充:如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数. ...
- 变种水仙花数 来自newcode一道初级编程题
变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily ...
- ACMNO.10打印出所有水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该本身。 例如:153是一个水仙花数,因为153=1^3+5^3+3^3。 Output: 153 ???
题目描述 打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身. 例如:153是一个水仙花数,因为153=1^3+5^3+3^3. ...
- /* * 编程第三题(20分) 打印所有的水仙花数。所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。(例153=1*1*1+3*3*3+5*5*5) */
题目: /* 编程第三题(20分) 打印所有的水仙花数.所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身.(例153=111+333+555) */ 我是用java做的 public cla ...
- 实例013:所有水仙花数 打印出所有的“水仙花数“,所谓“水仙花数“是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数“,因为153=1的三次方+5的三次方+3的三次方
实例013:所有水仙花数题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数&q ...
- Python今日编程——判断水仙花数然后求水仙花数
今天来的"潜一下水"咯,如何要用python函数写一个判断水仙花数的程序应该怎么做? 常规的编程题:编写一个判断一个数是否是水仙花数的函数,然后利用该函数求所有水仙花数. 然后思考 ...
- 什么是水仙花数并判断水仙花数
题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身.例如:153 是一个 "水仙花数 ", ...
- /* 题目: * 打印出所有的 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和 等于该数本身。 例如: 153 是一个 水仙花数
package Practice; public class Task_3 { /* 题目:* 打印出所有的 " 水仙花数 ",所谓 " 水仙花数 "是指一个三 ...
最新文章
- OpenCV-Python:实现人脸、人眼、嘴巴识别
- MYSQL数值运算符和函数用法
- 02.elasticsearch bucket aggregation查询
- HTML head 头标签
- API接口测试用例设计
- Fedora 14 x64 试用手记
- LWN: lockless编程模式——relaxed access和partial memory barrier
- 花音机器人_【扑杀花音攻略组】超弩风机器人攻略(复刻x2)
- composer.lock(锁文件)到底要不要提交到项目的版本库中?
- Python 实现用GUI设计有界面的词云生成器
- Android 7.0图片裁剪问题
- 电子书产品日趋丰富,科大讯飞智能办公本仍是理想之选
- Random不出现重复数字
- gocv-go语言调用opencv入门
- DBLE分库分表实战
- 操作系统文件存储空间管理(存储空间的划分与初始化)
- (心态篇)空杯心态,一个程序员的自我修炼
- 英特尔与阿里巴巴共推以数据为中心的计算革新
- 4K高清壁纸应用Pap.er Mac中文版
- 中国的5G建设和美国马斯克的星链有什么区别?