zoukankan      html  css  js  c++  java
  • 反素数

      反素数的定义: 对于任何的正整数n,其约数的个数记为f(n),例如f(6) = 4,如果某个正整数n满足,对于任意正整数i,0<i<n都有f(i)<f(n)那么称n为反素数。

    两个性质:

    (1)一个反素数的所有质因子必然是从2开始的连续若干个质数,因为反素数是保证约数个数为的这个数尽量小

    (2)同样的道理,如果,那么必有

    根据这2个性质可以找到反素数。可以用搜索来查找。

    模板:

    #include<map>
    #include<queue>
    #include<stack>
    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define INF 1000000001
    #define ll unsigned long long
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    using namespace std;
    const int MAXN = 510;
    int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,39,41,43,47,53,59,61,67};
    ll n;
    ll ans,ans_cnt;
    void getarcprime(ll cur,ll cnt,int limit,int k)
    {
        if(cur > n)return;
        if(cnt > ans_cnt){
            ans_cnt = cnt;
            ans = cur;
        }
        else if(cnt == ans_cnt && cur < ans){
            ans = cur;
        }
        for(int i = 1; i <= limit; i++){
            if(n / prime[k] < cur){
                return;
            }
            getarcprime(cur*prime[k],cnt*(i+1),i,k+1);//性质二
            cur = cur*prime[k];
        }
    }
    int main()
    {
        int t;
        cin >>t;
        while(t--){
            cin >>n;
            ans = 0;
            ans_cnt = 0;
            getarcprime(1,1,60,0);
            cout<<ans<<" "<<ans_cnt<<endl;
        }
        return 0;
    }
  • 相关阅读:
    LINQ to DataSet
    LINQ to SQL
    $.ajax()方法解析
    【转】数据库获得当前时间getdate()
    几种单例模式解析
    WebView上实现Java与JavaScript交互
    Dapper(.NET下的ORM框架)的基本使用
    IPtables中SNAT和MASQUERADE的区别
    我的桌面版fedora10安装
    我的fedora10的virtual box网络设置
  • 原文地址:https://www.cnblogs.com/sweat123/p/5356297.html
Copyright © 2011-2022 走看看