zoukankan      html  css  js  c++  java
  • hdu2710 Max Factor

    题目

    //下面这个是最先用的方法,因为学姐先讲完这个,所以懒得写代码,就将就着这个用,结果搞了老半天,还是错了,心累。。

    #include<stdio.h>
    #include<string.h>
    int prime[5010];
    bool isprime[5010];
    int solve(int n)
    {
        memset(prime,0,sizeof(prime));
        int p=0;
        for(int i=0; i<=n; i++) isprime[i]=true;
        isprime[0]=false;
        for(int i=2; i<=n; i++)
        {
            if(isprime[i])
            {
                prime[p++]=i;
                for(int j=i*2; j<=n; j+=i) isprime[j]=false;
            }
        }
        return p;
    }
    int main()
    {
        int n,T;
        int m=0;
        while(~scanf("%d",&T)){
        int _max=0;
        while(T--)
        {
            scanf("%d",&n);
            int ans = solve(n);
            for(int i=0; i<ans; i++) // printf("%d ",prime[i]);
            {
                for(int j=i+1; j<ans; j++)
                {
                    if(prime[i]*prime[j]==n&&(prime[i]>_max||prime[j]>_max))
                    {
                        _max= prime[i]>prime[j]? prime[i] : prime[j];
                        m=n;
                    }
                }
            }
    
    
        }
        printf("%d
    ",m);
    }
        return 0;
    }




    //然后,反思了一下,还是自己写代码好了,不用之前的那个,可能错就错在先入为主了,然后下面这是又一次的失败尝试:

    #include<stdio.h>
    #include<math.h>
    int _max=0;
    int loc=0;
    bool prime(int n)
    {
        int flag = true;
        for(int i=2;i<=sqrt(n);i++)
        {
            if(n%i==0)
            {
                flag = false ;
                break;
            }
        }
        if(flag==false) return false;
        else
            return true;
    }
    void  solve(int n)
    {
        int m;
        for(m=n-1;m>=1;m--)
        {
            if(prime(m))
            {
         //printf("%d ",m);
                if(n%m==0&&m>_max)
                {
    
    
                    _max=m;
                    loc=n;
                    return;
                }
    
    
            }
        }
    }
    
    
    int main()
    {
        int T,n;
           while(~scanf("%d",&T)){
        while(T--)
        {
            scanf("%d",&n);
            solve(n);
        }
        printf("%d
    ",loc);
        }
        return 0;
    }
    



    //最后百度了一下,然后借鉴到学姐讲的知识终于过了,心累

    #include<stdio.h>
    #include<string.h>
    int  isprime[20010];
    void solve()
    {
        memset(isprime,0,sizeof(isprime));
        isprime[1]=1;
        for(int i=2; i<=20001; i++)
        {
            if(isprime[i]==0)
            {
               for(int j=i; j<=20001; j+=i)
                isprime[j]=i;
            }
        }
    }
    int main()
    {
        int n,T;
        solve();
        while(~scanf("%d",&T)){
        int _max=-1;
        int loc =0;
        while(T--)
        {
            scanf("%d",&n);
            if(isprime[n]>_max)
            {
                _max=isprime[n];
                loc = n;
            }
    
    
        }
        printf("%d
    ",loc);
    }
        return 0;
    }


  • 相关阅读:
    Mac 删除并关闭.DS_Store
    python 使用AES加密16位
    python 使用AES加密时,提示模块不存在
    sql大全
    Mac 升级10.15后,安装软件时提示‘文件已损坏’的解决办法
    Django model Datefield和DateTimeField类型
    1013. 将数组分成和相等的三个部分
    python 批量pip安装包
    Ajax发送数据
    kafka实战教程(python操作kafka--理论篇)
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160292.html
Copyright © 2011-2022 走看看