标签:include app 正整数 http 4.0 unicode 分享 mat size
题目:
2520是最小的能被1-10中每个数字整除的正整数。
最小的能被1-20中每个数整除的正整数是多少?
分析:
题目的实质是求几个数的最小公倍数。
任何一个正整数都可以表示成几个素数的次方的乘积
假设PnPn表示第n个素数,那么任意正整数可以通过下面的式子获得:
一个整数要能被1-10的所有整数整除,那么就等同于他能被1-10之间的所有素数整除。那么此时:
KnKn的取值要保证最终值可以被所有含PnPn约数的数整除。以P1=2P1=2举例,注意到8是含有约数2的最大整数,所以K1=3K1=3。同理求得其它的k值。最终得到以下式子:
那么对于能被1-20的所以整数整除的数,它可以表示成如下形式:
最终求得:
#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); }
题目的实质是求几个数的最小公倍数。
任何一个正整数都可以表示成几个素数的次方的乘积
假设Pn表示第n个素数,那么任意正整数可以通过下面的式子获得:
一个整数要能被1-10的所有整数整除,那么就等同于他能被1-10之间的所有素数整除。那么此时:
Kn的取值要保证最终值可以被所有含Pn约数的数整除。以P1=2举例,注意到8是含有约数2的最大整数,所以K1=3。同理求得其它的k值。最终得到以下式子:
那么对于能被1-20的所以整数整除的数,它可以表示成如下形式:
最终求得:
标签:include app 正整数 http 4.0 unicode 分享 mat size
原文地址:https://www.cnblogs.com/shuaihui520/p/9048145.html