标题:c语言题目遇到问题求大神解答
只看楼主
elhut
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2019-4-12
 问题点数:0 回复次数:8 
c语言题目遇到问题求大神解答
找完数:
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。

输入格式:
输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。

输出格式:
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。

输入样例:
2 30

输出样例:
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14

怎么样才能输出那些因子呢
求大佬解答
搜索更多相关主题的帖子: 格式 输出 完数 c语言 输入 
2022-04-10 17:19
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <stdio.h>
#include <stdbool.h>

bool 是完数吗( unsigned n )
{
    unsigned sum = 1;
    for( unsigned i=2; i<n; ++i ) // 效率就别考虑了,n最大才10000
        if( n%i == 0 )
            sum += i;
    return sum==n;
}
2022-04-10 19:00
elhut
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2019-4-12
得分:0 
回复 2楼 rjsp
谢谢大佬,但是这个题目还要求输出完数的每个因子。。。。这个怎么搞哇
2022-04-10 20:02
elhut
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2019-4-12
得分:0 
回复 2楼 rjsp
啊,对不起,刚刚去翻了一下别的帖子,才知道还有数组这个操作,,打扰了
2022-04-10 20:19
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
才知道还有数组这个操作
可以不用数组,因为所有完数都可以写成 1+2+3+…… 的形式
程序代码:
#include <stdio.h>
#include <stdbool.h>

bool 是完数吗( unsigned n )
{
    unsigned sum = 0;
    for( unsigned i=1; i<n; ++i ) // 效率就别考虑了,n最大才10000
        if( n%i == 0 )
            sum += i;
    return n!=0 && sum==n;
}

int main( void )
{
    for( unsigned i=0; i<=10000; ++i )
    {
        if( 是完数吗(i) )
        {
            // 所有完数都可以写成 1+2+3+…… 的形式
            printf( "%u = 1", i );
            for( unsigned j=1; j*(j+1)/2!=i; ++j )
                printf( " + %u", j+1 );
            putchar( '\n' );
        }
    }
}

2022-04-10 23:04
zhu113522464
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-5-28
得分:0 
回复 5楼 rjsp
哥    接写C语言软件么   高价
2022-05-28 23:42
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:399
专家分:190
注 册:2021-4-9
得分:0 
2022-05-29 21:13
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:399
专家分:190
注 册:2021-4-9
得分:0 
2022-05-29 21:25
chenyucheng
Rank: 3Rank: 3
来 自:浙江省台州市临海市
等 级:论坛游侠
威 望:3
帖 子:141
专家分:181
注 册:2022-7-1
得分:0 
回复 5楼 rjsp
程序代码:
#include <stdio.h>
#include <stdbool.h>

bool shiWanQuanShu( unsigned n )//是完全数(吗)
{
    unsigned sum = 0;
    for( unsigned i=1; i<n; ++i ){ // 效率就别考虑了,n最大才10000
        if( n%i == 0 ) sum += i;
    }
    return n!=0 && sum==n;
}

int main( )
{
    unsigned int a; unsigned int b;
    printf("请输入求完全数的范围,空格隔开:");
    scanf("%u %u",a,b);//输入范围
    for( unsigned i=a; i<=b; ++i )
    {
        if( shiWanQuanShu(i) )
        {
            // 所有完全数都可以写成 1+2+3+…… 的形式
            printf( "%u = 1", i );
            for( unsigned j=1; j*(j+1)/2!=i; ++j )
                printf( " + %u", j+1 );
            putchar( '\n' );
        }
    }
    return 0;
}

爱玩编程的小学生,有Python,但只会一点点C++。

版主->斑竹->竹子,所以版主是竹子。(doge)
//不要让我当版主
2022-07-05 14:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508815-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073403 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved