水仙花数推算:VB
Dim a = 0, b = 0, c = 0, d = 0, f = 0
For a = 1 To 9 Step 1 '水仙花数
For b = 0 To 9 Step 1
For c = 0 To 9 Step 1
d = a * 100 + b * 10 + c
f = a ^ 3 + b ^ 3 + c ^ 3
'f = Math.Pow(a, 3) + Math.Pow(b, 3) + Math.Pow(c, 3)
If d = f Then
Console.WriteLine("{0} {1} {2} {3} {4}", d, f, a, b, c)
End If
Next
Next
Next
C# /*一个三位数各位数字的立方和等于该数本身时,该数为水仙花数,输出所有的水仙花数*/
foreach (int 啊 in Enumerable.Range(100, 899))
{
int 个位 = 1, 十位 = 1, 百位 = 1;
foreach (var aa in Enumerable.Range(0, 3))/*幕算法*/
{
个位 *= 啊 % 10;
十位 *= 啊 / 10 % 10;
百位 *= 啊 / 100;
}
//int 个位 = (int)Math.Pow(啊 % 10, 3), 十位 = (int)Math.Pow(啊 / 10 % 10, 3), 百位 = (int)Math.Pow(啊 / 100, 3);
if (百位 + 十位 + 个位 == 啊)
Console.WriteLine("{0} 百3幕{1} 十3幕{2} 个3幕{3} 该数为水仙花数{4}", 啊, 百位.ToString("000"), 十位.ToString("000"), 个位.ToString("000"), (百位 + 十位 + 个位).ToString("000"));
}
string 水仙花质数 = "";
int 质数 = 0;
while (++质数 < 1000)
{
int 位 = 质数.ToString().Length, 半 = 0; Double 立方和 = 0;
while (位 > 半)
立方和 += Math.Pow(int.Parse(质数.ToString()[半++].ToString()), 3);
if (立方和 == Double.Parse(质数.ToString()))
水仙花质数 += 质数 + " ";
}
Console.Write("水仙花质数:{0}", 水仙花质数);
C++
/*水仙花数:数各位立方和等于本身数,三个相同的数相乘,叫做这个数的立方。*/
int 数字(100), 位和(0), 立方(1), 数(0), 位数 = 数字;
do
{
do
{
立方 *= 位数 % 10;
if (++数 == 3)
{
位和 += 立方;
位数 /= 10;
立方 = 1;
数 = 0;
}
} while (位数);
if (位和 == 数字)
cout << 数字 << endl;
位和 = 0;
立方 = 1;
位数 = ++数字;
} while (数字 <= 1000);
void 判断水仙花数(int 数字=(153))
{/*水仙花数:数各位立方和等于本身数,三个相同的数相乘,叫做这个数的立方。*/
int 位和(0), 立方(1), 数(0), 位数 = 数字;
do
{
立方 *= 位数 % 10;
if (++数 == 3)
{
位和 += 立方;
位数 /= 10;
立方 = 1;
数 = 0;
}
} while (位数);
if (位和 == 数字)cout << "水仙花数:" << 数字 << endl;
else cout << "请继续输入" << endl;
}
2021-5-23
void 水仙花数()
{
int a = 153, aa = 0, aaa = 0;
while (a)aaa = a % 10, aa += aaa*aaa*aaa, a /= 10;
std::cout << aa << std::endl;
}
void 水仙花数()
{
int a = 111, aa = 0, aaa = 0, aaaa = a;
while (aaaa < 10000)
{
while (a)aaa = a % 10, aa += aaa*aaa*aaa, a /= 10;
if (aaaa == aa)std::cout << aa << std::endl;
a = ++aaaa; aa = 0;
}
}