C语言 简单粗暴的笨方法找水仙花数
作者:i跑跑 发布时间:2023-11-27 21:53:29
标签:C语言,水仙花数
什么是水仙花数:
指一个n位数,其各位数字的n次方之和确好等于该数本身
例如:? ?
1? ? ? ? ?1^1=1;
153? ? ? 3^3+5^3+1^3=153;
问题:求0~100000之间的水仙花数,并打印出来
看题目,找突破口:
0~100000? 我可以想到用循环来判断0~10000间的数字
由栗子可知:我们需要求数字是几位
要用到次方,则我们需要引用math函数库里的pow函数
求和,依旧要使用循环
那么开始写代码,走一步思考一步:
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
for (i = 0; i <= 100000; i++)
{
int n = 1; // n 为位数
int z = i; //经过while后i改变,i未变前赋值给z,代替原值i进行后面的计算
while (z / 10 != 0) //这里刚开始直接用i进行运算 死循环
{
n++;
z=z / 10; //用i运算的话,当i=10时 i=i/10 直接等于1 ,死循环,所以用变量z代替i
}
if (i == Sum(i, n)) //判断和是否等于原值
printf("%d ",i);
}
return 0;
}
看代码一定要看后面的注释,这里要注意的点:
用了n代表位数,求n时while循环会改变i值,不利于后面的计算,所以用z代替
设置函数Sum来计算和,函数代码如下:
int Sum(int x, int y) //x接收i,y接收n
{
int k = 0;
int num = 0;
int sum = 0;
for (k=0;k<y;k++) //循环求和
{
num = pow(x % 10, y); //取出每一位的数字,求次方
sum += num; //累加求和
x/=10; //去掉最低位的数字
}
return sum; //返回和
}
完整代码如下:
#include <stdio.h>
#include <math.h>
int Sum(int x, int y)
{
int k = 0;
int num = 0;
int sum = 0;
for (k=0;k<y;k++)
{
num = pow(x % 10, y);
sum += num;
x/=10;
}
return sum;
}
int main()
{
int i = 0;
for (i = 0; i <= 100000; i++)
{
int n = 1;
int z = i;
while (z / 10 != 0)
{
n++;
z=z / 10;
}
if (i == Sum(i, n))
printf("%d ",i);
}
return 0;
}
运行结果:
这样找水仙花数就完成了? ? ? ? ? ? ? ? ? ? ??
来源:https://blog.csdn.net/weixin_53316121/article/details/121411624
0
投稿
猜你喜欢
- 1、未配置之前2、开始配置 2.1 新建一个unauth.html<!DOCTYPE html><html la
- 本文实例讲述了Java实现的zip工具类。分享给大家供大家参考,具体如下:实现把zip解压到指定路径,把文件夹压缩到zip,把文件列表压缩为
- 在 Java 中,null 是一个表示“空值”的特殊值。相信大家都很了解 null 在 Java 中
- 今日遇到一个问题:springboot需要获取到一个自定义名称文件夹下的静态资源(图片等),并且文件夹的路径不在classPath下面,而是
- 方案一: 采用reflections 框架(此框架依赖com.google.guava)1、reflections框架地址:https://
- 在我们对gc中的算法有基本概念理解后,要把算法的理念实现还需要依托实际垃圾收集器的使用。因为光靠一些简单的原理不足以支撑整个程序的运行,在回
- 背景环境需要设置代理才能够访问外部网络,如果只是运行java程序来访问网络,我们可以通过java -jar test.jar -Dproxy
- C语言是高级语言,它的语法接近于人类的自然语言,但比自然语言严谨。计算机无法直接将C语言的代码运行,他们并不懂得什么是C语言,实际上,计算机
- 一:Android 中Home键监听和Back键监听的区别:(1).在Android中,当按下Home键的时候,默认情况下Stop前台的Ac
- 可以使用 Java 8 中的 Map.replaceAll() 方法将所有的值转为 String 类型:Map<String, Obj
- 本文实例为大家分享了本地图片或者网络图片高斯模糊效果(毛玻璃效果),具体内容如下首先看效果图1.本地图片高斯模糊2.网络图片高斯模糊gith
- 碎片的创建要使用碎片先要创建一个碎片,创建一个碎片很简单。1.新建一个碎片布局,fragment.xml<?xml version=&
- 方法的覆盖在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称、返回值类型、参数列
- 本文实例讲述了Java Swing实现JTable检测单元格数据变更事件的方法。分享给大家供大家参考,具体如下:在JTable的初级教程中往
- android客户端生成本地验证码主要用来限制用户随意按请求按钮,其实该示例也是来对自定义view的练练手而已,先给出效果图吧其中可定制:*
- 本文实例为大家分享了Unity3D实现旋钮控制灯光效果的具体代码,供大家参考,具体内容如下前言实际上使用的是非常简单的方式,通过开启以及关闭
- 代码如下:public class TempTest { public static void main(String[] args) {
- mybatis的映射文件写法多种多样,不同的写法和用法,在实际开发过程中所消耗的开发时间、维护时间有很大差别,今天我就把我认为比较简单的一种
- 前言Google终于发布了一个和SQLite相关的库了。之前一直都是在SQLite、XUtils、greenDao、Realm这些数据库之间
- 本文实例讲述了java基于JDBC连接Oracle 11g Release2的方法。分享给大家供大家参考。具体如下:Oracle 11g R