写一个输出所有水仙花数的C语言程序
时间: 2023-06-04 11:09:00 浏览: 99
好的,以下是输出所有水仙花数的C语言程序:
#include <stdio.h>
int main() {
int i, n, sum;
for (i = 100; i <= 999; i++) {
n = i;
sum = 0;
while (n > 0) {
sum += (n % 10) * (n % 10) * (n % 10);
n = n / 10;
}
if (sum == i) {
printf("%d ", i);
}
}
return 0;
}
注意:水仙花数指的是一个三位数,它的各个位数的立方和等于它本身,例如153、370、371、407等。
相关问题
输出所有的水仙花数c语言程序
水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如153=1³+5³+3³,153就是一个水仙花数。现在我们来编写一个输出所有水仙花数的C语言程序。
首先,我们需要循环遍历所有n位数,从100开始到999结束。对于每个数,我们需要计算它每个位上的数字的n次幂之和,并判断是否等于本身。
具体实现代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
int n = 3; // 水仙花数的位数
int i, num, sum;
for (num = 100; num <= 999; num++)
{
sum = 0;
for (i = 0; i < n; i++)
{
int digit = num / (int)pow(10, i) % 10;
sum += pow(digit, n);
}
if (sum == num)
{
printf("%d\n", num);
}
}
return 0;
}
在循环中,我们首先将当前数的个位、十位、百位上的数字分别计算出来,并逐个求出它们的n次幂。接着将这些n次幂之和赋值给sum,最后判断sum是否等于num,是则输出num。
运行这个程序可以看到,它将所有3位水仙花数(即153、370、371、407)输出了出来。如果想输出更多位数的水仙花数,只需将n的值更改为相应的位数即可。
输出所有水仙花的c语言程序
在C语言中,水仙花数(也称 Narcissistic Number 或者 Pluperfect Digital Invariant)是指一个三位数,其各位数字立方之和等于它本身。例如,153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
下面是一个简单的C语言程序,用于找出所有的水仙花数:
#include <stdio.h>
int is_narcissistic(int num) {
int digits[4], sum = 0;
// 分割数字并计算立方和
while (num > 0) {
digits[sum++] = num % 10;
num /= 10;
}
// 检查每一位是否满足条件
for (int i = 0; i < sum; i++) {
if (digits[i] != digits[sum - i - 1]) {
return 0; // 如果不匹配,不是水仙花数
}
sum += digits[i]*digits[i]*digits[i]; // 累加立方和
}
return sum == num; // 返回最后的立方和是否等于原数
}
int main() {
int start = 100, end = 999;
printf("The narcissistic numbers between %d and %d are:\n", start, end);
for (int num = start; num <= end; num++) {
if (is_narcissistic(num)) {
printf("%d ", num);
}
}
printf("\n");
return 0;
}
相关推荐
















