点赞(16)
 

0.0分

6 人评分

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

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

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

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

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

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

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

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

评论列表 共有 10 条评论

大杯牛奶 2年前 回复TA
@Yuuwei 个人理解,拿(220,284)来说,如果不加A=B,则A会从221继续开始算,所以到284会重复;加了A=B,则A会从285开始算,避免重复,如果不对,欢迎指正。
渐入佳境. 3年前 回复TA
@Yuuwei 同问
Yuuwei 3年前 回复TA
为什么没有A=B会重复输出
1120170746 4年前 回复TA
@煮酒老麦 除了第一次,每做一次循环,b和s的值不是从零开始的,需要在循环里加上b=0,s=0,让其从零开始计算
onemorecod 4年前 回复TA
哎,时间超限
#include <stdio.h>

int main()
{
    int i;
    int k;
    int m,n;
    int r;
    int a,b;
	int c[200]={0},d[200]={0};
    
	for( m=220;m<3000;m++ ){
		a=0;
		for( i=1;i<m;i++ ){
			if( m%i==0 ){
				a +=i;
			}
		}
		for( n=m+1;n<m+305;n++ ){
			b=0;
			for( k=1;k<n;k++ ){
				if( n%k==0){
					b +=k;
				}
			}	
			if( (a==n)&&(b==m) ){
				printf("(%d,%d)",m,n);
				break;
			}
		}
	}
	return 0;
}
煮酒老麦 4年前 回复TA
@煮酒老麦 这个答案我还没有防止重复,以及先小后大
煮酒老麦 4年前 回复TA
这个总是输出空白,但是我把a分别赋值就可以输出那一组亲密数了,很奇怪
#include<stdio.h>
int main() {
	int a,b=0,i,j=0,s=0;
	for(a=1; a<3001; a++) {
		for(i=1; i<a; i++) {
			if(a%i==0) {
				b=b+i;
			}
		}
		for(i=1; i<b; i++) {
			if(b%i==0) {
				s=s+i;
			}
		}
		if(a==s) {
			printf("(%d,%d)",a,b);
		}
	}
	return 0;
}
ChdZzxJ 5年前 回复TA
主函数里的i为什么要定义220?
商业互吹 6年前 回复TA
@Christ 就是i
Christ 6年前 回复TA
n没有声明是多大耶,默认的吗?这段代码里面的n到底是多少啊?