(附加题)水仙花数是一个三位数,其个位数的立方+十位数的立方+百位数的立方=这个数本身,例如153是一个水仙花数。试找出100-999间的所有水仙花数,并对每个水仙花数找出其所有质因数,例如153的质因数有3,3,17
————题源来自老师布置的课后附加题
首先对题目进行拆解:
- 先找出水仙花数
取出它的每一位数字并存储(%)(/)
的基础操作
- 找出质因数
质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数);否则称为合数。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。最小的质数是2。
则只需要让水仙花数挨个除以,2—它本身-1的数即可,若能%==0,则该数为水仙花数的质因数。
有了如上思路我们开始写代码。
有了如上思路我们开始写代码
#include<iostream>
using namespace std;
int main() {
int num, a, b, c;
int m;
for (num = 100; num < 1000; num++) {
a = num % 10;
b = num / 10 % 10;
c = num / 100;
if (num == (a * a * a + b * b * b + c * c * c)) {
cout << num << " ";
m = num;
for (int i = 2; i <= num; i++){
while (m % i == 0 ){
cout << i << " ";
m = m / i; }
}
} cout<<endl;
}
return 0;
}