亲密数对有哪些举例

发布网友 发布时间:2022-04-25 03:14

我来回答

2个回答

热心网友 时间:2023-10-22 20:14

亲密数对
**
描述

如果a的所有正因子和等于b,b的所有正因子和等于a,且a不等于b,则称a,b为亲密数对,给定正整数N,求2~N中的亲密数对。

输入

第一行一个正整数N,1<=N<=2000。

输出

输出若干行,每行有两个用一个空格隔开的正整数,表示一对亲密数

输入样例 1

200

输出样例1

48 75
75 48
140 195
195 140

#include<bits/stdc++.h>
using namespace std;
int ys(int n){
int all=0;
for(int i=2;i<=n/2;++i){
if(n%i==0)all+=i;
}
return all;
}

int main(){
int n;
cin>>n;
for(int i=2;i<=n;++i){
if(ys(ys(i))==i&&i!=ys(i)&&ys(i)<=n){
cout<<i<<" "<<ys(i)<<endl;
}
}
return 0;
}
个人理解
int ys(int n){
int all=0;
for(int i=2;i<=n/2;++i){
if(n%i==0)all+=i;
}
return all;
}
此处函数判断是否为因数。由于一个因数不可能大于它的一半,所以优化数据长度 i<=n/2 。

for(int i=2;i<=n;++i){
if(ys(ys(i))==i&&i!=ys(i)&&ys(i)<=n){
cout<<i<<" "<<ys(i)<<endl;
}
此处 if 的判断条件稍有讲究。 ys(i) 为题目中的b,而 ys(ys(i)) 则为b是否与a为亲密数对的判断。
而 ys(i)<=n 是为了*b的大小。

热心网友 时间:2023-10-22 20:15

#include
void main()
{
int k,j,m,n;
for(n=2;n

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com