|
发表于 2021-9-8 21:40:24
|
显示全部楼层
错误的地方太多了,你对照我写的程序,看你错了多少
- #include <stdio.h>
- #include <stdbool.h>
- size_t proper_divisor_sum(size_t n, bool print) {
- size_t sum = 0;
- const char *op = "";
- if(print) printf("%lu 的真因数之和为: ", n);
- for(size_t i = 1; i < n; ++i) {
- if(n % i == 0) {
- sum += i;
- if(print) {
- printf("%s%lu", op, i);
- op = "+";
- }
- }
- }
- if(print) printf("=%lu\n", sum);
- return sum;
- }
- int main(void) {
- size_t skip[100], index = 0;
- for(size_t i = 1; i < 10000; ++i) {
- bool flag = true;
- for(size_t j = 0; j < index; ++j) {
- if(skip[j] == i) {flag = false; break;}
- }
- if(flag != true) continue;
- size_t sum = proper_divisor_sum(i, false);
- if(proper_divisor_sum(sum, false) == i && sum != i) {
- skip[index++] = sum;
- printf("相亲数:%lu,%lu\n", i, sum);
- proper_divisor_sum(i, true);
- proper_divisor_sum(sum, true);
- }
- }
- return 0;
- }
复制代码 |
|