代码错误,这个代码刚开始编写的时候,自以为算法是准确的,结果没有什么依据,之后才改了过来。
先看看问题
这是我刚开始写的代码
#include<stdio.h>
int main()
{
int t,n,temp,j,flag1,i,flag2,sum=1;
scanf("%d",&t);
while(t--)
{
int a[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
scanf("%d",&n);
for(i=1;i<=n-1;i++)
{
for(j=i+1;j<=n-1;j++)
{
flag1=a[i];
flag2=a[j];
while(flag2!=0)
{
temp=flag1%flag2;
flag1=flag2;
flag2=temp;
}
a[i]/=flag1;
if(a[i]==1)
break;
}
}
for(i=0;i<=n-1;i++)
{
sum=sum*a[i];
}
printf("%d\n",sum);
sum=1;
}
}
这是我之后查完之后写的(就是俩个数俩个数的求最小公倍数)
#include<stdio.h>
int function(long int a,long int b)
{
int c;
while(b!=0)
{
c=a%b;
a=b;b=c;
}
return a;
}
int main()
{
long int i,t,n,sum=1;
scanf("%ld",&t);
while(t--)
{
scanf("%ld",&n);
for(i=2;i<=n;i++)
sum=sum/function(sum,i)*i;
printf("%ld\n",sum);
sum=1;
}
return 0;
}
之后写代码的时候,没有原理的代码不要写,除非完全没有什么原理,就想啥写啥,如果代码动起来了,就不要动他了,毕竟,编程第一原则
:如果我的代码以一种我无法理解的方式运行起来了,那就不要再动了。