日积跬步,可至千里
打印所有 “水仙花数”,所谓 “水仙花数” 是指一个三位数,其各位数字立方和等于该数本身
例如,153是一个水仙花数,因为153=1的立方 + 5的立方+ 3的立方
#include <stdio.h>
void main() // void 代表主函数没有返回值,空括号代表主函数不带参;大部分情况下都是如此,但是主函数是可以带参的,形式是这样: void main(int argc,char *argv[]),argc 是包括执行文件本身在内的参数总个数,argv是一个字符型指针数组,里面依次装有参数的字符串
{
int i,a,b,c; //定义四个整型变量
for (i=100;i<1000;i++) // 给i赋初值100,在[100,999]的范围内,i会逐1自增
{
a=i/100; //将的百位取出赋予a,因为整型之间的算数运算结果还是整型(会舍去小数位)所以利用这个特性与100相除可以取出百位的数值
b=i%100/10; //将i的十位取出赋予b,与100的取模,可以得到低两位的值,再除10可以得到十位的值,原理同上
c=i%10; //将i的个位取出赋予c,直接对10取模就可以获得个位的余值
if (i == a*a*a+b*b*b+c*c*c) printf("%d\n",i); //判断i的值是否与自己个十百各位的立方和相等,如果相等就打印输出
}
}
思路还是相对简单
通过水仙花数的定义,可知我们的甄选范围是所有的三位数整数,因此这里需要一次对[100,999]的遍历
然后关键就是如何将这个三位数的个十百位数值分别取出
紧接着就是将值进行比较,符合特性的进行输出
这里还有另一种路径,就是分别对这个三位数的个十百位进行遍历,个位范围[0,9],十位范围 [0,9],百位范围[1,9],然后使用这些数值来构建这个三位数,然后进行比较和过滤
原文地址
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。