#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 人评分
A+B for Input-Output Practice (VI) (C++代码)浏览:445 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:387 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:484 |
WU-蓝桥杯算法提高VIP-企业奖金发放 (C++代码)浏览:1268 |
【简单计算】 (C语言代码)浏览:642 |
剪刀石头布 (C语言代码)浏览:1792 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:597 |
字符逆序 (C语言代码)浏览:675 |
GC的苦恼 (C语言代码)浏览:672 |
企业奖金发放 (C语言代码)浏览:2462 |
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就能保证不重复输出且小数在前了。