水仙花数是一个三位数,其个位数的立方+十位数的立方+百位数的立 方=这个数本身,例如 153 是一个水仙花数。试找出 100-999 间的所有水仙花数, 并对每个水仙花数找出其所有质因数,例如 153 的质因数有 3,3,17。
输入描述: 无输入
输出描述: 每行输出一个水仙花数和其质因数,以空格隔开。先输出小的水仙花数。
#include <iostream>
using namespace std;
int main()
{
int a, b, c,d,m;
for (int i = 100;i < 999;i++) { //循环进行范围选择
a = i % 10;
b = i / 10 % 10;
c = i / 100;
d = a * a * a + b * b * b + c * c * c;
if (d == i) {
cout << d<<" "; //输出水仙花数
m = d; //将值赋到 m 中,避免陷入死循环
for (int i = 2; i <= d; i++)
{
while (m % i == 0)//循环求质因数
{
cout << i << " ";
m = m / i;
}
}
cout << endl;
}
}
return 0;
}