鱼C论坛

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

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

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

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

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

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

问题在哪?
求更简便的方法。
#include<stdio.h>
int f(int x);
void judge();
int main()
{
        void judge();
        return 0;
}
int f(int x)
{
        int k,sum=0;
        for(k=0;k<x;k++)
        {
                if(x%k==0)
                {
                        sum=sum+k;
                }
        }
        return sum;
}
void judge()
{
        int i,j;
        for(i=1;i<501;i++)
        {
                for(j=1;j<501;j++)
                {
                        if(f(i)==j&&f(j)==i)
                        {
                                printf("%d %d\n",i,j);
                        }
                }
        }
}
最佳答案
2020-12-24 21:57:08
没有输出的问题,可能是第12行错误,k 不能从 0 开始呀,因为下面的判断是 x % k ,它相当于 x / k
1.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

int sum(int n)
{
        int k , s                                              ;
        for(s = 1 , k = 2 ; k < n ; k ++) if(! (n % k)) s += k ;
        return s                                               ;
}

main(void)
{
        int a , c , k , m                                      ;
        for(c = 0 , k = 0 ; k < 501 ; k ++) {
                if(k > 1) {
                        a = sum(k)                             ;
                        if(sum(a) == k) {
                                c ++                           ;
                                printf("%3d\t%3d\n" , k , a)   ;
                                if(a > k) k = a                ;
                        }
                }
        }
        if(! c) printf("指定范围没有友好数。\n")               ;
}
        编译、运行实况
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
  6       6
 28      28
220     284
496     496

D:\00.Excise\C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

还是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

他这个和一般的整除问题不一样,不知只有小于a/2的因子才算,大于的也要加上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个亲密数对比较稀少,5000以内也就只有三对:
  220 <--> 284
1184 <--> 1210
2620 <--> 2924
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

啊擦,找到问题了,main里的不用加void,那个不用加i!=j的,我看错题了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

呵呵~~为了达到你的更简便,我花了半个小时,将能省的变量都省了,直接用 b 来记录因子和
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 06:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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