码迷,mamicode.com
首页 > 其他好文 > 详细

欧拉项目第五题

时间:2018-05-16 22:32:11      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:include   app   正整数   http   4.0   unicode   分享   mat   size   

题目:

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

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

分析:

解题方法

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

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

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

 
Num=Pk11Pk22Pk33?Pknn,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",N);

}
View Code

 

解题方法

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

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

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

 
Num=Pk11Pk22Pk33?Pknn,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

欧拉项目第五题

标签:include   app   正整数   http   4.0   unicode   分享   mat   size   

原文地址:https://www.cnblogs.com/shuaihui520/p/9048145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!