如何用C#寻找100到999的所有水仙花数?

首先解释一下何为水仙花数:水仙花数只是自幂数的一种,严格来说是三位数的个位、十位、百位的3次幂数相加等于原来的数字,称为水仙花数。(例如:1^3 + 5^3+ 3^3 = 153)

那么如何通过C#语句来解决这个问题呢?

分析:想要找到百位的水仙花数,要解决的问题由两个,第一个是如何让计算机正确分离出百位数的个位、十位、百位的数字。第二个是如何将其不断循环让100到999都能经过检验。

第一个问题:将这个数值类型定义为整型int(这种数据类型的数字是没有小数点的)

最高位数字——对100整除,则小数点后的数值都被强制去掉了。如153/100=1.53=1(int类型);

最低位数字——对10取余数,153%10=3;

中间位数字,利用上面两种方法有两种不同的解决思路。

方法1:将其变为最高位数字再整除,先将这个数字减去100*最高位数字,则中间位则成为最高位数字,再用它对10整除,小数点被去掉了。

如(153-100*1)/10=5.3=5(int)

方法2:将其变为最低位数字,这个数字除以10之后,中间位的数字就变成了最低位。由于除法运算符的优先级高于求余运算符,所以括号可以省略。

(153/10)%10=153/10%10=15%10=5

第二个问题:选用while或for循环结构,使得100到999都能拆开来分别来检验。

int i=100

while(i<=999){循环体 ;i++;

}

for(表达式1;表达式2;表达式3)

表达式1设置初始条件,表达式2是循环条件,表达式3是循环的调整。

for (int i = 100; i < 1000; i++)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

代码示例

int num = 100;
while(num <= 999)
{
int a = num / 100;//取出数字的百位
int b = num / 10 % 10;//取出数字的十位
int c = num % 10;//取出数字的个位
if (num == a * a * a + b * b * b + c * c * c)//计算过程
{
Console.WriteLine(num);//输出数字
}
num++;
}
Console.ReadLine();

其实用C#寻找100到999的所有水仙花数的方式有多种,可以利用for循环等等,这里就不一一列出。

时间: 2024-10-06 13:33:10

如何用C#寻找100到999的所有水仙花数?的相关文章

求100到999之间的水仙花数

所谓"水仙花数" ,是指一个 3 位数,其各位 数字立方和等于该数本身 所谓"水仙花数" ,是指一个 3 位数,其各位 数字立方和等于该数本身 for(int a=1;a<=9;a++){ for(int b=0;b<=9;b++){ for(int c=0;c<=9;c++){ if(a*a*a+b*b*b+c*c*c==a*100+b*10+c){ System.out.println(a*100+b*10+c); } } } } 所谓&quo

输出0到999之间的水仙花数

#include<stdio.h>#include<math.h>int main(){   int a,b,c,t; int i=0; for(i=100;i<999;i++) {  a=i/100;    t=i%100;    b=t/10;    c=i%10;    if(pow(a,3)+pow(b,3)+pow(c,3)==i)   printf("%d\n",i); } return 0;}

用封装完成100到10000以内的水仙花数

public boolean is(int num){ //定义一个方法 int count=(num+"").length(); //把num转换成String型,在算出他的字符长度,赋予count int num1=num; //把num的值备份num1 int sum=0;    //定义一个变量,来储存结果 while(num>0){ //循环大于0的值 int b=1; //定义一个次幂 int a=num%10; //求出他的个位数 for(int i=1;i<

打印出100到999的水仙花数

所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个水仙花数,因为153=1*1*1 + 5*5*5 + 3*3*3 1 public class Flower 2 { 3 public static void main(String[] args) 4 { 5 int temp=0; 6 System.out.println("水仙花数为:"); 7 for (int i=100;i<999 ;i++ ) 8 { 9 temp =

编写一个程序找出100~999之间所有的水仙花数

如果一个3位数等于其各位的立方和,称该数为水仙花数. 如,所以407是一个水仙花数,编写一个程序找出100~999之间所有的水仙花数. 1 #include<stdio.h> 2 #include<stdlib.h> 3 //判断水仙花数,是则返回1 4 int isNarcissus(int n); 5 6 int main() 7 { 8 int i; 9 for(i = 100; i < 1000; i++) 10 if(isNarcissus(i)) 11 print

C语言 求出100~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 +

求100到999之间水仙花的个数

题目:打印出所有的 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本身. 例如:153是一个 水仙花数 ,因为153=1的三次方+5的三次方+3的三次方. public static void main(String[] args) { System.out.println(Arrays.toString(getNarcissisticNumber(100, 999))); } /** * 打印出所有的 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本

编写一个Java应用程序,该应用程序包括2个类:Print类和主类E。Print 类里有一个方法output()功能是输出100 ~ 999之间的所有水仙花数(各位数字的 立方和等于这个三位数本身,如: 371 = 33 + 73 + 13。)在主类E的main方法中来 测试类Print。

package com.homework.zw; //print类部分 public class Print { void output() { for(int i =100;i<=999;i++) { if(Math.pow(i/100,3)+Math.pow(i%10,3)+Math.pow(i/10%10, 3)==i) { System.out.println(i); } } } } package com.homework.zw; //主类E部分 public class E { pu

【python】编写一个程序,求100~999之间的所有水仙花数

编写一个程序,求100~999之间的所有水仙花数. 如果一个三位数等于其各位数字的立方和,则称这个数为水仙花数. 例如:153=1^3+5^3+3^3 因此153就是一个水仙花数 代码如下 #水仙花数 for i in range(100, 1000): sum = 0 temp = i while temp: sum = sum + (temp%10)**3 temp //=10 if sum == i: print(i) 原文地址:https://www.cnblogs.com/SiminL