c语言中,如何输出所有的水仙花数
5个回答
展开全部
水仙花数即三位的自幂数。所谓自幂数,就是指一个 n 位数 ( n≥3 ),其每位上的数字的 n 次幂之和等于本身。
所以水仙花数,首先是三位数,形式为abc,同时a,b,c的立方和值与原本数相同。
类似的还有
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
等等。
对于水仙花数的判断,需要按照以下步骤:
1 提取该数的个位,十位,百位值。
2 计算三个数的立方和。
3 与原值比较,如相等则是。
要输出所有水仙花数,需要:
1 对所有三位数,即100到999遍历;
2 对每个数判断是否为水仙花数,如是则退出。
当循环结束,所有的水仙花数就输出成功了。
代码如下:
int isNarcissistic(int n)
{
int a = n/100;
int b = n/10%10;
int c = n%10;
return a*a*a + b*b*b + c*c*c == n;
}
int main()
{
int i;
for(i = 100; i< 1000; i ++)
if(isNarcissistic(i)) printf("%d ",i);
}
输出结果如下:
153 370 371 407
所以水仙花数,首先是三位数,形式为abc,同时a,b,c的立方和值与原本数相同。
类似的还有
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
等等。
对于水仙花数的判断,需要按照以下步骤:
1 提取该数的个位,十位,百位值。
2 计算三个数的立方和。
3 与原值比较,如相等则是。
要输出所有水仙花数,需要:
1 对所有三位数,即100到999遍历;
2 对每个数判断是否为水仙花数,如是则退出。
当循环结束,所有的水仙花数就输出成功了。
代码如下:
int isNarcissistic(int n)
{
int a = n/100;
int b = n/10%10;
int c = n%10;
return a*a*a + b*b*b + c*c*c == n;
}
int main()
{
int i;
for(i = 100; i< 1000; i ++)
if(isNarcissistic(i)) printf("%d ",i);
}
输出结果如下:
153 370 371 407
TableDI
2024-07-18 广告
2024-07-18 广告
当我们谈到Python与Excel的拆分时,通常指的是使用Python的库来读取Excel文件中的数据,然后根据某种逻辑(如按行、按列、按特定值等)将数据拆分成多个部分或输出到新的Excel文件中。上海悉息信息科技有限公司在处理这类任务时,...
点击进入详情页
本回答由TableDI提供
展开全部
输出999以内的水仙花数:
int main()
{
int i,a,b,c;
for(i=100;i<=999;i++)
{
a=i/100;
b=i%100/10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c) printf("%5d",i);
}
getch();
return 0;
}
祝你成功!
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int main(){//打印所有水仙花数(三位数),如:153=1^3+5^3+3^3(要求分别用一重循环和三重循环实现)
int number,i,j,m;
printf("所有的水仙花数如下:\n");
//一重循环
// for(number=100;number<=999;number++){
// i=number/100;
// j=(number%100)/10;
// m=number%10;
// if(number==i*i*i+j*j*j+m*m*m){
// printf("%d ",number);
// }
// }
//三重循环
for(i=1;i<=9;i++){
for(j=0;i<=9;j++){
for(m=0;i<=9;m++){
number=i*100+j*10+m;
if(number==i*i*i+j*j*j+m*m*m){
printf("%d ",number);
}
}
}
}
}
int main(){//打印所有水仙花数(三位数),如:153=1^3+5^3+3^3(要求分别用一重循环和三重循环实现)
int number,i,j,m;
printf("所有的水仙花数如下:\n");
//一重循环
// for(number=100;number<=999;number++){
// i=number/100;
// j=(number%100)/10;
// m=number%10;
// if(number==i*i*i+j*j*j+m*m*m){
// printf("%d ",number);
// }
// }
//三重循环
for(i=1;i<=9;i++){
for(j=0;i<=9;j++){
for(m=0;i<=9;m++){
number=i*100+j*10+m;
if(number==i*i*i+j*j*j+m*m*m){
printf("%d ",number);
}
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include "stdio.h"
int main()
{
int a,b,c,d;
for(a=100;a<=999;a++)
{
b=a/100;
c=(a-100*b)/10;
d=a-100*b-10*c;
if(b*b*b+c*c*c+d*d*d==a)
printf("Ë®ÏÉ»¨ÊýÊÇ%d\n",a);
}
return 0;
}
我这个是计算100-999的 你改下就符合你的要求了
int main()
{
int a,b,c,d;
for(a=100;a<=999;a++)
{
b=a/100;
c=(a-100*b)/10;
d=a-100*b-10*c;
if(b*b*b+c*c*c+d*d*d==a)
printf("Ë®ÏÉ»¨ÊýÊÇ%d\n",a);
}
return 0;
}
我这个是计算100-999的 你改下就符合你的要求了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询