• 欧拉项目第五题


    题目:

    2520是最小的能被1-10中每个数字整除的正整数。

    最小的能被1-20中每个数整除的正整数是多少?

    分析:

    解题方法

    题目的实质是求几个数的最小公倍数。

    任何一个正整数都可以表示成几个素数的次方的乘积

    假设PnPn表示第n个素数,那么任意正整数可以通过下面的式子获得:

     
    Num=Pk11Pk22Pk33Pknn,nN+knNNum=P1k1P2k2P3k3⋯Pnkn,n∈N+,kn∈N

    一个整数要能被1-10的所有整数整除,那么就等同于他能被1-10之间的所有素数整除。那么此时:

     
    2520=2k1×3k2×5k3×7k42520=2k1×3k2×5k3×7k4


    KnKn的取值要保证最终值可以被所有含PnPn约数的数整除。以P1=2P1=2举例,注意到8是含有约数2的最大整数,所以K1=3K1=3。同理求得其它的k值。最终得到以下式子:

     
    2520=23×32×5×72520=23×32×5×7


    那么对于能被1-20的所以整数整除的数,它可以表示成如下形式:

     
    Num=2k1×3k2×5k3×7k4×11k5×13k6×17k7×19k8Num=2k1×3k2×5k3×7k4×11k5×13k6×17k7×19k8


    最终求得:

     
    232792560=24×32×5×7×11×13×17×19
    那么这些素数的次方怎么求呢?以2为例子,我们先假设pow(2,x)=20,两边同时乘于log10,则x=log10(20)/log10(2);
    #include<stdio.h>
    #include<math.h>
    int POW(int a,int b)
    {
        int ans=1;
        for(int i=1 ; i<=b ; i++)
        ans=a*ans;
        return ans;
    }
    int main( )
    {
        int p[10]={0,2,3,5,7,11,13,17,19};
        int a[30];
        int k=20;
        int N=1;
        int i=1;
        bool op=true;
       int li=sqrt(k);
        while(p[i]<=k)
        {
            a[i]=1;
            if(p[i]<=li)
            {
                a[i]=floor(log(k)/log(p[i]));
            }
    
            i = i+1;
    
        }
        for(int i=1 ; i<=8 ; i++)
        {
            N=N*POW(p[i],a[i]);
        }
        printf("%d
    ",N);
    
    }
    View Code

    解题方法

    题目的实质是求几个数的最小公倍数。

    任何一个正整数都可以表示成几个素数的次方的乘积

    假设PnPn表示第n个素数,那么任意正整数可以通过下面的式子获得:

     
    Num=Pk11Pk22Pk33Pknn,nN+knNNum=P1k1P2k2P3k3⋯Pnkn,n∈N+,kn∈N

     

    一个整数要能被1-10的所有整数整除,那么就等同于他能被1-10之间的所有素数整除。那么此时:

     
    2520=2k1×3k2×5k3×7k42520=2k1×3k2×5k3×7k4


    KnKn的取值要保证最终值可以被所有含PnPn约数的数整除。以P1=2P1=2举例,注意到8是含有约数2的最大整数,所以K1=3K1=3。同理求得其它的k值。最终得到以下式子:

     
    2520=23×32×5×72520=23×32×5×7


    那么对于能被1-20的所以整数整除的数,它可以表示成如下形式:

     
    Num=2k1×3k2×5k3×7k4×11k5×13k6×17k7×19k8Num=2k1×3k2×5k3×7k4×11k5×13k6×17k7×19k8


    最终求得:

     
    232792560=24×32×5×7×11×13×17×19
  • 相关阅读:
    解决 “invalid resource directory name”, resource “crunch”
    Unable to resolve target 'android-19'
    android SDK安装容易出错的原因
    Eclipse启动认定SDK地址,出现Error executing aapt
    解决Android SDK Manager更新下载速度慢
    Vue框架
    JSON
    Django之组件--cookie与session
    Django之组件--中间件
    Django之组件--forms
  • 原文地址:https://www.cnblogs.com/shuaihui520/p/9048145.html
Copyright © 2020-2023  润新知