我想将lcm的1到20计算。这段代码适用于1到
10,但是当我使用相同的代码1到20时,输出是232792237。
正确的输出是232792560.我被卡住了。
C程序确定lcm为1到20
#include<stdio.h>
#include<math.h>
#define MAX 1000
int main()
{
int a,z,i,j,b[MAX],k=0,count=0,l,p,n=1,limit,m=0;
printf("Enter two numbers");
scanf("%d%d",&a,&z);
l=z;
/*Storing prime numbers in array*/
for(i=a+1;i<=z-1;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
break;
}
if(j==i)
{
b[k]=i;
k++;
count++;
}
}
limit=sqrt(l);
/*Determining the smallest multiple*/
while(b[m]<=l)
{
p=1;
if(b[m]<=limit)
p=floor(log10(l)/log10(b[m]));
n=n*pow(b[m],p);
m++;
printf("%d\n",n);
}
return(0);
}