点赞(0)
 

0.0分

311 人评分

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

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

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

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

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

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

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

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

评论列表 共有 135 条评论

菜就多刷题 3年前 回复TA
解释的确实不错!!
dog 3年前 回复TA
@孙兴磊 你这个应该是求的n是否为完数吧,题目要求是求n以内的所有完数,要用两次循环
0110苗紫阳 3年前 回复TA
max定义为50会报错,为什么?在int范围内最大的完数也没50个因子那么多啊?
0110苗紫阳 3年前 回复TA
复制答案输出示例之后明明最后一个数字后面有空格,写出程序就不对;没有最后空格才对,怎么回事??
寡妇村村长 3年前 回复TA
#include<stdio.h>
int main() {
    int n,i,j;
    scanf("%d",&n);//读入n
    for(i=1; i<=n; i++) { //遍历1~n
        int tem=0; //每次内层循环结束tem重新赋值为0
        for(j=1; j<i; j++) { //判断是否为完数
            if(i%j==0) { // 判断是否为因子
                tem+=j; //因子求和
            }
        }
        if(tem==i) {   //因子和等于本身即为完数-->输出
            printf("%d\n",i);
        }
    }
    return 0;
牧码人 3年前 回复TA
@孙兴磊 可能因为 第一个for循环没有{}
孙兴磊 3年前 回复TA
我的做法,提交错误,有什么问题么
#include<stdio.h>
int main()
{
	int N,i,s=0;
	scanf("%d",&N);
	for(i=1;i<N;i++)
		if(N%i==0)
		s+=i;
	if(s==N)
	{
		printf("%d its factors are",N);
		for(i=1;i<N;i++)
			if(N%i==0)
			printf("%d ",i);
		printf("\n");
	}
	return 0;
 }
l 3年前 回复TA
@zhouyf k之前的都是这次的,不会输出k后边的
zhouyf 3年前 回复TA
答主,第二种解法中,为什么不考虑数组的a[ ]的重置呢?尽管答案是对的,但感觉这里需要完善一下~
随风 3年前 回复TA
好难啊  我天