|
发表于 2023-6-18 09:50:33
|
显示全部楼层
#include<stdio.h>
#include<math.h>
int Determine(int i);
int Determine(int i)
{
int n;
if(i==1)
{
return 0;
}
if(i==2)
{
return i;
}
else if(i%2==0)
{
return 0;
}
else
{
for(n=2;n<=pow(i,0.5);n++)
{
if(i%n==0)
{
return 0;
}
}
return i;
}
}
int main(void)
{
int i,k;
unsigned long long int sum=1;
for(i=1;i<=20;i++)
{
k=Determine(i);
if(k)
{
for(k;k*k<=20;k=k*k)
{
;
}
printf("%d\n",k);
sum=sum*k;
}
}
printf("最小的能被 1-20 中每个数整除的正整数是%lld\n",sum);
return 0;
}
//思路
/*
2->2
3->3
2->4
5->5
7->7
2->8
3->9
11->11
13->13
2->16
17->17
19->19
利用一个定理,任何一个合数都可以拆成 质数积 形式,用集合(且可以多同一元素)取并集
还可以质数的次方判断
但必须引入一个纯合数的概念,质数积 形式=全部为同一个质数。
在它的前面,不可能有比它还需要(在数量上)这同一个质数的数了
*/ |
|