亲密数
Posted 258-333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了亲密数相关的知识,希望对你有一定的参考价值。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
main()
int i, j, s1, s2, n = 3000;
for (j = 2; j <= n; j++)
s1 = 1; //保证每次循环i的初值为1
for (i = 2; i <= j / 2; i++)
if (j % i == 0) //判断i是否为j的因子
s1 += i;
s2 = 1; //保证每次循环i的初值为1
for (i = 2; i <= s1 / 2; i++)
if (s1 % i == 0) //判断i是否为s1的因子
s2 += i;
if (s2 == j &&s1 > j)printf("%d -- %d\\n",j,s1);
亲密数对递归求逆
/* * @Issue: 亲密数对问题:从键盘输入正整数 M 和 N(M<N),输出 M 和 N 之间所有的亲密数对。 亲密数对的定义如下:两个正整数 x 和 y,若 x 的所有因子之和(不包括 x 本身)等于 y, 并且 y 的所有因子之和(不包括 y 本身)等于 x,则 x 和 y 为亲密数对。 * @Author: 一届书生 * @LastEditTime: 2020-02-21 10:04:41 */ #include<iostream> using namespace std; #define maxn 10000 int getSum(int n){ int cnt=1; for(int i=2;i<=n/2;i++){ if(n%i==0){ cnt+=n/i; } } return cnt; } int main(){ int qin[maxn]; int m,n; while(cin>>m>>n){ for(int i=m;i<=n;i++){ qin[i]=getSum(i); } // for(int i=m;i<=n;i++){ // cout<<qin[i]<<" "; // } for(int j=m;j<=n;j++){ if(j==qin[qin[j]]&&qin[j]!=1){ //别判断错了,是j和qin[qin[j]]判等 cout<<qin[j]<<" "<<qin[qin[j]]<<endl; qin[qin[j]]=0; } } } return 0; }
/* * @Issue: 从键盘输入一个整数 n,输出 n 的逆,如输入 12345,输出 54321,请尽量设计递归函数实现。 * @Author: 一届书生 * @LastEditTime: 2020-02-21 10:20:40 */ #include<iostream> using namespace std; void reverse(int n){ cout<<n%10; n/=10; if(n>0)reverse(n); } int main(){ int n; while(cin>>n){ reverse(n); } return 0; }
以上是关于亲密数的主要内容,如果未能解决你的问题,请参考以下文章