求三位数的水仙花数之和

对于一个三位数n,若每位数字的立方和等于其自身,则称为水仙花数,求出所有三位数的水仙花数之和,不使用pow函数,无输入要求。

分解出三个数字,计算立方和就好了

#include <stdio.h>
int main()
{
    int sum = 0,a,b,c;
    for(int i=100;i<1000;i++)
    {
        a = i/100;
        b = i%100/10;
        c = i%10;
        if(a*a*a + b*b*b + c*c*c == i)
          sum += i;
    }
    printf("%d",sum);
}

#include <stdio.h>

int main() {
    int n, sum = 0;
    for (n = 100; n <= 1000; n++) {
        int a = n / 100;    
        int b= n / 10 % 10;    
        int c = n % 10;    
        if (a * a * a + b * b *b+ c * c * c == n) {
            sum += n;    
        }
    }
    printf("所有三位数的水仙花数之和为:%d\n", sum);
    return 0;
}

我做完啦

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7556643
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:6.10.水仙花数是指各位数字的立方和等于该数本身的三位数。例如153是水仙花数,请编程并计算出所有的水仙花数。
  • 除此之外, 这篇博客: C语言例题中的 2.输出所有水仙花数,所谓水仙花数是指一个三位数,其个位数字立方和等于该数本身,例如,153为水仙花数。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include <stdio.h>
    #include <math.h>
     
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char *argv[]) {
    	int n1, n2, n3, i;
    	for (i = 100; i < 999; ++i)
    	{
    		n1 = i / 100; // 百位数
    		n2 = (i - 100 * n1) / 10; //十位数
    		n3 = i % 10; //个位数 
    		//printf("%d %d %d\n", n1, n2, n3);
    		
    		if ((pow(n1, 3) + pow(n2, 3) + pow(n3, 3)) == i)
    		{
    			printf("%d 是一个水仙花数\n", i);
    		} 
    	}
    	
    	return 0;
    }
    
  • 以下回答由chatgpt基于相关博客总结生成:

    ```markdown 我的回答如下: 由于输入的是三位数,我们可以通过循环遍历3位数的数字范围,然后取出其每一位数字,计算立方和,再与原数字比较是否相等,从而判断是否为水仙花数。 具体实现步骤如下所示: 1. 定义一个变量用于计算水仙花数之和sum,并初始化为0。 2. 循环遍历数字范围100-999,即for(int i=100; i<1000; i++)。 3. 取出每个数字的各位数字,计算立方和,并记录到sum变量中。 4. 判断sum与原数字i是否相等,如果相等则说明i是水仙花数,累加到结果变量中。 5. 输出结果变量即可。

    具体实现代码如下所示:

    include

    int main() { int sum = 0; // 水仙花数之和 for(int i = 100; i < 1000; i++){ int num = i; int digit1 = num / 100; // 取百位数字 num = num % 100; int digit2 = num / 10; // 取十位数字 num = num % 10; int digit3 = num; // 取个位数字 int narcissistic = digit1 * digit1 * digit1 + digit2 * digit2 * digit2 + digit3 * digit3 * digit3; if(i == narcissistic){ sum += i; // 累加水仙花数之和 } } printf("三位水仙花数之和为:%d\n", sum); return 0; }

    参考了代码段落0中的水仙花数判断方法,不过修改了一些代码。 虽然题目不要求使用pow函数,但是为了代码更加简洁,可以使用pow函数来求立方值。

    注:该题还有另外一种求解方法,是先写出求N位水仙花数的通用公式,然后再套用公式即可,但难度较大,不适用于该问题。