对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。如果某个正整数x满足:g(x)>g(i) 0<i<x
,则称x为反质数。例如,整数1,2,4,6等都是反质数。现在给定一个数N,你能求出不超过N的最大的反质数么
?
标签:质数 family name 因此 time enter memory 联系 最大的
一个数N(1<=N<=2,000,000,000)。
不超过N的最大的反质数。
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 5 #define LL long long 6 7 int dist[20]={2,3,5,7,11,13,17,19,23,29,31}; 8 int n,ans,num; 9 10 void dfs(LL t,int k,int tmp) 11 { 12 if(k==11) 13 { 14 if(tmp>num){ans=t;num=tmp;} 15 if(t<ans&&tmp==num){ans=t;num=tmp;} 16 return; 17 } 18 for(int i=0;i<31;i++) 19 { 20 dfs(t,k+1,tmp*(i+1)); 21 t*=dist[k]; 22 if(t>n) break; 23 } 24 } 25 26 int main() 27 { 28 scanf("%d",&n); 29 dfs(1,0,1); 30 printf("%d",ans); 31 return 0; 32 }
标签:质数 family name 因此 time enter memory 联系 最大的
原文地址:https://www.cnblogs.com/InWILL/p/9191461.html