C语言中求一个数的个位数,十位数...

您所在的位置:网站首页 java求个位十位百位 C语言中求一个数的个位数,十位数...

C语言中求一个数的个位数,十位数...

2022-12-08 05:35| 来源: 网络整理| 查看: 265

求出0~999之间的所有“水仙花数”并输出。 “水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。

/* 在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。 例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数: 153 = 1^3 + 5^3 + 3^3。 370 = 3^3 + 7^3 + 0^3。 371 = 3^3 + 7^3 + 1^3。 407 = 4^3 + 0^3 + 7^3。 */

这是我在日常练习中发现的一道题,我的想法是求出三位数的个位数,十位数,百位数然后利用每个数的立方和判断是不是水仙花数.  

#include #include int main(){ int i = 100; int a = 0; int b = 0; int c = 0; for ( i = 100; i < 1000; i++) { a = i %1000; b = i %100; c = i %10; if (i==a*a*a+b*b*b+c*c*c) { printf("%d\n", i); } } system("pause"); return 0; }

 但是经过编译发现结果不对,如果按照我的写法个位数可以,但是十位数,百位数就不对了.举个例子,如果三位数为123,个位数:123%10==3,但是十位数:123%100==23,后面的同样如此.经过这次,我发现我的思路还是不够严谨.

最后经过搜索加上自己的理解算十位数是,先给原数除以10,这样就可以让十位数相当与个位数,然后按照个位数的算法可以求出十位数.百位数以及更多的位数可以一次类推.

就这个题而言我最后改为

#include #include int main(){ int i = 100; int a = 0; int b = 0; int c = 0; for ( i = 100; i < 1000; i++) { a = i / 100%10; b = i / 10%10; c = i / 1%10; if (i==a*a*a+b*b*b+c*c*c) { printf("%d\n", i); } } system("pause"); return 0; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3