#include<bits/stdc++.h> #define ll long long using namespace std; const int MAXN=1e4+5; int n; int prime[MAXN],tot; bool not_prime[MAXN]; void get_prime(){ for(int i=2;i<=n;i++){ if(!not_prime[i])prime[++tot]=i; for(int j=1;j<=tot&&prime[j]i<=n;j++){ not_prime[prime[j]i]=1; if(i%prime[j]==0)break; } } } int sum(int x){ int ans=1; for(int i=1;i<=tot&&prime[i]<=x;i++){ int p=prime[i],cnt=0; while(x%p==0)x/=p,cnt++; if(cnt)ans=((ll)pow(p,cnt+1)-1)/(p-1); } if(x!=1)ans=x+1; return ans; } int main(){ cin>>n; get_prime(); vector v[MAXN]; for(int i=1;i<n;i++){ int s=sum(i); v[s].push_back(i); } for(int i=1;i<n;i++){ for(int j=0;j<v[i].size();j++){ int x=v[i][j]; for(int k=j+1;k<v[i].size();k++){ int y=v[i][k]; if(sum(y)%x==0){ cout<<x<<" "<<y<<endl; } } } } return 0; }


原文地址: https://www.cveoy.top/t/topic/p45 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录