水仙花問題的兩種C語言實現方案
阿新 • • 發佈:2018-12-11
方法一:使用除法以及取模運算得到三位數的每一位數值。
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> int main(int argc, char *argv[]) { for (size_t i = 100; i <= 999; i++) { int top = i / 100; int mid = i % 100 / 10; int end = i % 10; if (i == pow(top, 3) + pow(mid, 3) + pow(end, 3)) { printf("%d\n", i); } } system("pause"); return 0; }
方法二:使用三重迴圈表示每一位的數值。需要注意的是這裡的最外層迴圈要從1開始,表示只包含三位數;否則就會出現0和1這樣的特殊情況。
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> int main(int argc, char *argv[]) { for (size_t i = 1; i < 9; i++) { for (size_t j = 0; j < 9; j++) { for (size_t k = 0; k < 9; k++) { if (i * 100 + j * 10 + k == pow(i, 3) + pow(j, 3) + pow(k, 3)) { printf("%d\n", i * 100 + j * 10 + k); } } } } system("pause"); return 0; }