//两个数的最大公约数
//两个数的最小公倍数
//将一个正整数分解质因数 –和 2.3.5取余
#include <stdio.h>
int main1()
{
// 3,4
//20
int v;
scanf("%d", v);
int a = 20;
int start = 1;
int end = a;
int result = 0;
for (i = start; i <= end; i++)
{
//求出一个数中的最大质数
if (a % i == 0 && i % 2 != 0)
{
result = i;
}
}
printf(result);
}
//最奇葩得求最大公约数和最小公倍数
int main2()
{
//最大公约数
//输入
int a = 20;
int b = 25;
//声明循环的标志
int start = 1;
int end = a < b ? a : b;
//声明接收最大公约数的遍历
int maxGongyue = 0;
for (int i = start; i < end; i++)
{
if (a % i == 0 && b % i == 0)
{
maxGongyue = i;
}
}
printf(maxGongyue);
return 0;
}
//求最小公倍数
int main3()
{
//最小公倍数
//输入
int a = 30;
int b = 50;
//声明循环标志
int start = a * b;
int end = a > b ? a : b;
//声明接收最小公倍数的变量
int minGongbei = 0;
for (int i = start; i >= end; i--)
{
if (i % a == 0 && i % b == 0)
{
minGongbei = i;
}
}
printf(minGongbei);
return 0;
}
//判断一个数是不是质数
int panDuanZhiShu(int s)
{
int sign = 1;
for (int i = 2; i <= process - 1; i++)
{
if (s % i == 0)
{
sign = 0;
}
}
return sign;
}
int main4()
{
//分解质因数
//输入
int a = 90;
int start1 = 1;
int end1 = a;
int process = a;
while (1)
{
for (int i = start1; i < end; i++)
{
if (panDuanZhiShu(i))
{
if (process % i == 0)
{
printf(i);
process = process / i;
break;
}
}
}
//当process=1得时候跳出循环
if (process == 1)
{
break;
}
}
}
/*
有两整数a和b:
① a%b得余数c
② 若c=0,则b即为两数的最大公约数
③ 若c≠0,则a=b,b=c,再回去执行①
例如求27和15的最大公约数过程为:
27÷15 余1215÷12余312÷3余0因此,3即为最大公约数
*/
void main() /* 辗转相除法求最大公约数 */
{
int m, n, a, b, t, c;
printf("Input two integer numbers:\n");
scanf("%d%d", &a, &b);
m=a; n=b;
while(b!=0) /* 余数不为0,继续相除,直到余数为0 */
{ c=a%b; a=b; b=c;}
printf("The largest common divisor:%d\n", a);
printf("The least common multiple:%d\n", m*n/a);
}