1 条题解
-
0
C :
#include<stdio.h> #include<math.h> int find(int x){ int sum=0,i,t=sqrt(x); for ( i=2; i<=t; i++) if (x%i==0) sum+=i+x/i; if (t*t==x) sum-=t; return sum; } int main(){ int n,a,b,c; scanf("%d",&n); for ( a=2; a<=n; a++){ b=find(a); c=find(b); if (a==c && a!=b && b<=n) printf("%d %d\n",a,b); } return 0; }C++ :
#include <iostream> #include <cmath> using namespace std; int sum(int n){ int s,i; s=0; for(i=2;i<=sqrt(n);i++){ if(n%i==0){ if(i==n/i){ s=s+i; }else{ s=s+i+n/i; } } } return s; } void shudui(int n){ int i,s; for(i=2;i<=n;i++){ s=sum(i); if(sum(s)==i&&i!=s&&s<=n){ cout<<i<<" "<<s<<endl; } } } int main(){ int n; cin>>n; shudui(n); }Pascal :
var a:array[0..200000] of longint; i,j,n,s:longint; begin readln(n); for i:=2 to 2000 do begin s:=0; for j:=2 to i-1 do if i mod j=0 then inc(s,j); a[i]:=s; end; for i:=2 to n do if (a[a[i]]=i)and(a[i]<>i)and(a[i]<=n) then writeln(i,' ',a[i]); end.Java :
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); qinMi(n); } public static int forSum(int n) { int sum = 0; for(int i = 2; i <= n / 2; i++ ) { if(n % i == 0) { sum += i; } } return sum; } public static void qinMi(int n) { int sum1 = 0; int sum2 = 0; for(int i = 2; i <= n ; i++ ) { sum1 = forSum(i); for(int k= 2; k <= n ; k++ ) { sum2 = forSum(k); if(sum1 == k && i == sum2 && i != k) { System.out.println(i + " " + k); } } } } }Python :
def yinZiHe(n): s=0 for i in range(2,n): if n%i==0: s+=i return s n=int(input()) for i in range(2,n+1): # i的因子和等于b b的因子和等于i if yinZiHe(yinZiHe(i))==i and yinZiHe(i)!=i and yinZiHe(i)<=n: print(i,yinZiHe(i))
- 1
信息
- ID
- 135
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者