鱼C论坛

 找回密码
 立即注册
查看: 996|回复: 8

[已解决]没有输出(问题在哪是重点)

[复制链接]
发表于 2020-12-24 20:55:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 一世轻尘 于 2020-12-24 21:50 编辑

问题在哪?
求更简便的方法。
  1. #include<stdio.h>
  2. int f(int x);
  3. void judge();
  4. int main()
  5. {
  6.         void judge();
  7.         return 0;
  8. }
  9. int f(int x)
  10. {
  11.         int k,sum=0;
  12.         for(k=0;k<x;k++)
  13.         {
  14.                 if(x%k==0)
  15.                 {
  16.                         sum=sum+k;
  17.                 }
  18.         }
  19.         return sum;
  20. }
  21. void judge()
  22. {
  23.         int i,j;
  24.         for(i=1;i<501;i++)
  25.         {
  26.                 for(j=1;j<501;j++)
  27.                 {
  28.                         if(f(i)==j&&f(j)==i)
  29.                         {
  30.                                 printf("%d %d\n",i,j);
  31.                         }
  32.                 }
  33.         }
  34. }
复制代码
最佳答案
2020-12-24 21:57:08
没有输出的问题,可能是第12行错误,k 不能从 0 开始呀,因为下面的判断是 x % k ,它相当于 x / k
1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-24 21:12:41 | 显示全部楼层
本帖最后由 jackz007 于 2020-12-24 21:14 编辑
  1. #include <stdio.h>

  2. int sum(int n)
  3. {
  4.         int k , s                                              ;
  5.         for(s = 1 , k = 2 ; k < n ; k ++) if(! (n % k)) s += k ;
  6.         return s                                               ;
  7. }

  8. main(void)
  9. {
  10.         int a , c , k , m                                      ;
  11.         for(c = 0 , k = 0 ; k < 501 ; k ++) {
  12.                 if(k > 1) {
  13.                         a = sum(k)                             ;
  14.                         if(sum(a) == k) {
  15.                                 c ++                           ;
  16.                                 printf("%3d\t%3d\n" , k , a)   ;
  17.                                 if(a > k) k = a                ;
  18.                         }
  19.                 }
  20.         }
  21.         if(! c) printf("指定范围没有友好数。\n")               ;
  22. }
复制代码

        编译、运行实况
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3.   6       6
  4. 28      28
  5. 220     284
  6. 496     496

  7. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-24 21:57:08 | 显示全部楼层    本楼为最佳答案   
没有输出的问题,可能是第12行错误,k 不能从 0 开始呀,因为下面的判断是 x % k ,它相当于 x / k
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-24 22:05:24 | 显示全部楼层
风过无痕1989 发表于 2020-12-24 21:57
没有输出的问题,可能是第12行错误,k 不能从 0 开始呀,因为下面的判断是 x % k ,它相当于 x / k

还是不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-24 22:17:18 | 显示全部楼层
我还是将我的发出来吧
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int a, i, b, n;
  5.         for (a = 1; a < 501; a++)                // 穷举500以内的全部整数
  6.         {
  7.                 for (b = 0, i = 1; i <= a / 2; i++)  // 计算数a的各因子,各因子之和存放于b
  8.                         if (!(a%i))
  9.                                 b += i;
  10.                 for (n = 0, i = 1; i <= b / 2; i++)  // 计算b的各因子,各因子之和存于n
  11.                         if (!(b%i))
  12.                                 n += i;
  13.                 if (n == a && a<b)                    // 使每对亲密数只输出一次
  14.                         printf("%4d<-->%4d    \n", a, b);     // 若n=a,则a和b是一对亲密数,输出
  15.         }

  16.         return 0;
  17. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-24 22:21:53 | 显示全部楼层
风过无痕1989 发表于 2020-12-24 22:17
我还是将我的发出来吧

他这个和一般的整除问题不一样,不知只有小于a/2的因子才算,大于的也要加上
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-24 22:26:53 | 显示全部楼层
一世轻尘 发表于 2020-12-24 22:21
他这个和一般的整除问题不一样,不知只有小于a/2的因子才算,大于的也要加上

这个亲密数对比较稀少,5000以内也就只有三对:
  220 <--> 284
1184 <--> 1210
2620 <--> 2924
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-24 22:56:11 | 显示全部楼层
风过无痕1989 发表于 2020-12-24 22:26
这个亲密数对比较稀少,5000以内也就只有三对:
  220  284
1184  1210

啊擦,找到问题了,main里的不用加void,那个不用加i!=j的,我看错题了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-24 23:03:08 | 显示全部楼层
一世轻尘 发表于 2020-12-24 22:56
啊擦,找到问题了,main里的不用加void,那个不用加i!=j的,我看错题了

呵呵~~为了达到你的更简便,我花了半个小时,将能省的变量都省了,直接用 b 来记录因子和
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-4 05:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表