亲和数对
2023-12-15 19:38:25
任务描述
编程读入两个正整数a,b,输出[a,b]区间内的所有亲和数对。亲和数对的含义是一对整数M和N,满足M的真约数之和等于N,同时N的真约数之和等于M。请一定注意输出样例的所示的数据范围。
输入格式:
两个正整数a,b(2<a<b<20000)。
输出格式:
输出[a,b]区间内的所有亲和数对,一对一行
输入样例:
2 10000
输出样例:
220,284
1184,1210
2620,2924
5020,5564
6232,6368
输入样例:
1200 5050
输出样例:
2620,2924
输入样例:
10000 20000
输出样例:
10744,10856
12285,14595
17296,18416
代码长度限制
16 KB
时间限制
3000 ms
内存限制
64 MB
C程序如下:
#include <stdio.h>
int sum(int a);//求这个数的所有真约数和
int main(void)
{
int x,y;
scanf("%d%d", &x, &y);//输入两个正整数
for(int i = x; i <= y; i++)
{
int t = sum(i);//定义一个变量t并让t等于i的真因数和
if(i < t && sum(t) == i && sum(i) <= y)//如果i小于i的所有真因数和&&i的真因数和的真因数和与i相等
{ //i及其真因数和都在[x,y]这个范围内,那么这两个数就是亲和数对。220的所有真因数和为248
printf("%d,%d\n", i, sum(i)); //248的所有真因数和为220
}
}
return 0;
}
int sum(int a)
{
int sum = 0;
for(int i = 1; 2 * i <= a; i++)//求这个数的所有真约数和,只需遍历这个数的一半
{
if(a % i == 0)
{
sum += i;
}
}
return sum;
}
文章来源:https://blog.csdn.net/2302_80325489/article/details/135023464
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!