View Code of Problem 93

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
struct num{
	int a;//数 
	int b;//因子和 
};
int factsum(int num){
	int sum=1;
	for(int i=2;i<=sqrt(num*1.0);i++){
		if(num%i==0){
			sum+=i;
			if(i!=num/i){
				sum+=num/i;
			}
		}
	}
	return sum;
} 
int close[5001]={};
void printnum(int m,int n){
	for(int i=m;i<=n;i++){
		if(close[i]!=0){
			continue;
		}
		int a=i;
		int b=factsum(i);
		int bfact=factsum(b);
		if(a==bfact&&a!=b){
			close[a]=1;
			close[b]=1;
			if(a>b)
				swap(a,b);
			cout<<a<<" "<<b<<endl;
//			close[clnum].a=a;
//			close[clnum].b=b;
			
		}	
	}
}

int main(){
	int m,n;
	cin>>m>>n;
	printnum(m,n);
	return 0;
}

Double click to view unformatted code.


Back to problem 93