解题思路:
这样弄感觉思维会更加清晰




注意事项:





参考代码:

#include<stdio.h>
int main()
{
    int n,i,k,sum=0;
    scanf("%d",&n);
    for(i=2;i<=n;i++)
    {
        for(k=1;k<i;k++)
        {
            if(i%k==0)
            {
            sum+=k;                                     
            }
        }    
            if(sum==i)
            {
                printf("%d its factors are",i);
                for(k=1;k<i;k++)
                {
                    if(i%k==0)printf(" %d",k);                       
                }
            printf("\n");
            }
          
            sum=0;                  
    }
    return 0;
}


点赞(6)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 5 条评论

tuzi12581 5年前 回复TA
@大蛇丸 long double N,  改int N
cnf 6年前 回复TA
超时的 把for(k=1;k<i;k++) 改成for(k=1;k<=(i/2);k++)就可以解决了
大蛇丸 6年前 回复TA
#include <stdio.h>
int main()
{
    long double N, sum = 0;
    scanf( "%d", &N );
    for ( int i = 2; i <= N; i++ )
    {
        for ( int j = 1; j <i/2; j++ )
        {
            if ( i % j == 0 )
            {
                sum = sum + j;
            }
        }
        if ( sum == i )
        {
            printf( "%d its factors are ", i );
            for ( int k = 1; k < i; k++ )
            {
                if ( i % k == 0 )printf( "%d ", k );
            }
            printf( "\n" );
        }
        sum = 0;
    }
    return(0);
}
问下我这个哪里错了?
不会编程 7年前 回复TA
@突触小泡 用printf换行,这里sum=0;的作用和return 0;是一样的,将值返回原值
突触小泡 7年前 回复TA
printf("\n");
            }
           
            sum=0;                  
    }
请问这里是什么意思