#include <stdio.h> int wan(int a) { int sum = 1, i; for (i = 2; i < a; i++) { if (a % i == 0) sum += i; } return sum; } int main() { int i, j; int sum, sam; for (i = 1; i <= 3000; i++) { sum = wan(i); if (sum == 1) continue; //素数 for (j = i + 1; j <= 3000; j++) { if (sum != j) continue; //先判断 i因数和与j 是否相等(省时 sam = wan(j); if (sam == 1) continue; //素数 if (sum == j && sam == i) { printf("(%d,%d)", i, j); } } } return 0; }
0.0分
3 人评分
Mo23 2021-07-14 09:35:38 |
if AB值转换的话,会导致A永远是220(220 ,284);直接删掉则会重复输出两次亲密数,这里我给出修改后的。
Mo23 2021-07-14 09:35:59 |
if(x==A&&A!=B) { if(A>B) continue; printf("(%d,%d)",A,B); }
Mo23 2021-07-14 09:37:19 |
题目要求AB(亲密数)不同,再加上判断一次A不大于B就能保证不重复输出且小数在前了。