|
最大公约数(H.C.M. / G.C.D.)
最小公倍数(lcm) gcd(a, b) * lcm(a, b) = ab
1、求两个数之间的最大公约数和最小公陪数
void main()
{ int a,num1,num2,temp; printf("please input two numbers:\n"); scanf("%d%d",&num1,&num2); int ji = num1*num2; if(num1<num2) //保证第一数是较大的值 { temp=num1; num1=num2; num2=temp; } while((a=num1%num2)!=0) /*利用辗除法,直到a为0为止*/ { num1=num2; num2 = a; } //此时num2就是最大公约数
printf("the gcd is: %d\n",num2);
printf("the lcm is: %d\n",ji/num2); }
2、求三个数之间的最大公约数
int main() { int x,y,z,a,min; scanf("%d%d%d",&x,&y,&z); if(x>=y) if(y>=z)min=z; else min=y; else if(y<=z)min=x; else if(x<=z)min=x; else min=z; printf("这三个数中最小的是",min);
for(a=min;a>0;a--)
{ printf("%d",a); if(x%a==0&&y%a==0&&z%a==0)break; } printf("\n这三个数的最大公约数是%d\n",a); system("pause"); }
3、判断是否是质数
质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大
但不是素数的数称为合数。1和0既非素数也非合数。合数是由若干个质数相乘而得到的。所以,质数是合数的基础,没有质数就没有合数。
bool prime(int x) { int n = (int)sqrt((double)x); int i;
for (i = 2; i <= n; i++)
(责任编辑:admin)if (x % i == 0) return false; return true; } |




