急求用 c语言编写一个程序求两个数的最小公倍数,越简单越好。

急求用 c语言编写一个程序求两个数的最小公倍数,越简单越好。,第1张

一般,欲求最小公倍数,先求最大公约数。输入/输出部分你自己写了,这里只是简单用C语言表示使用欧几里德算法:gcd(a,b) = gcd(b,a mod b)进行计算的部分。理解这个算法是关键,可以参考网络上的相关解释或者相关书籍上的解释。 输入部分/ input /略。 处理部分先求最大公约数,用递归形式表示欧几里德算法。如果理解了算法,看上去是非常舒服(简单)的。/ greatest common divisor /int gcd(int a, int b){ return b == 0 ( a : gcd(a%b));} 通过最大公约数,再求最小公倍数。/ least common multiple /int lcm(int a, int b) { return a b / gcd (a, b);} 输出部分/output/略。

是武科大的吗?

import javautilScanner;

public class Sy6_29 {

public static void main(String[] args) {

Scanner scanner = new Scanner(Systemin);// 获得两个数

Systemoutprintln("请输入整数a:");

int a = scannernextInt();

Systemoutprintln("请输入整数b:");

int b = scannernextInt();

scannerclose();

int q1=(int)(a/2);

int q2=(int)(b/2);

//int q=q1+q2;

//int table[][]=new int[q][2];

int tableone[][]= new int[q1][2];

int tabletwo[][]= new int[q2][2];

int m=0,n=0;

for (int i = 2, j = (int)(a/2); i <= j; i++) {

if (a % i == 0 && isNeed(i)) {// 先判断是否整除,再判断是否是素数

tableone[m][0]=i;

tableone[m][1]=getCount(a, i);

m++;

}

}

Systemoutprintln(a + "的素数因子列表: ");// 打出a的素数因子

for (int i = 0, j = q1; i < j; i++) {

if ( tableone[i][0]!=0)

Systemoutprint(tableone[i][0] + ", ");

}

Systemoutprintln();

Systemoutprintln(a + "的素数因子出现次数: ");// 打出a的各因子出现次数

for (int i = 0, j =q1; i < j; i++) {

if ( tableone[i][1]!=0)

Systemoutprint(tableone[i][1] + ", ");

}

Systemoutprintln();

for (int i = 2, j = (int)(b/2); i <= j; i++) {

if (b % i == 0 && isNeed(i)) {

tabletwo[n][0]=i;

tabletwo[n][1]=getCount(b, i);

n++;

}

}

Systemoutprintln(b + "的素数因子列表: ");// 打出b的素数因子

for (int i = 0, j = q2; i < j; i++) {

if ( tabletwo[i][0]!=0)

Systemoutprint(tabletwo[i][0] + ", ");

}

Systemoutprintln();

Systemoutprintln(b + "的素数因子出现次数: ");// 打出b的各因子出现次数

for (int i = 0, j =q2; i < j; i++) {

if ( tabletwo[i][1]!=0)

Systemoutprint(tabletwo[i][1] + ", ");

}

Systemoutprintln();

//int u=0;

for(int i=0;i<q1;i++){

for(int j=0;j<q2;j++){

if (tableone[i][0]==tabletwo[j][0]){

//table[i][0]=tableone[i][0];

int s1=tableone[i][1];

int s2=tabletwo[j][1];

if(s1<s2)

{tableone[i][1]=tabletwo[j][1];

tabletwo[j][1]=0;

}

else tabletwo[j][1]=0;

//else table[u][1]= tabletwo[i][1];

//tableone[i][1]=tabletwo[j][1]=0;

}

}

}

double g=1;

for(int j=0;j<q1;j++){

g=gjavalangMathpow((double)tableone[j][0],(double)tableone[j][1]);

}

for(int k=0;k<q2;k++){

g=gjavalangMathpow((double)tabletwo[k][0],(double)tabletwo[k][1]);

}

Systemoutprintln(a + "和" + b + "的最小公倍数是:"+(int)g);

}

// 判断是否是素数

public static boolean isNeed(int a) {

for (int i = 2, j = (int)(a/2); i <= j; i++) {

if (a % i == 0) {

return false;

}

}

return true;

}

// 求a的因子i出现次数

public static int getCount(int a, int i) {

int count = 0;

while (a % i == 0) {

count++;

a = a / i;

}

return count;

}

}

不是自夸,我也算一高手。看懂这笨算法就几秒的事情。很简单,程序如下 #include /因为是库,最好将双引号改成尖括号/ int fun(int a,int b,int c){/求3个参数中的最大值,前面最好加返回类型int/ if(a>=b&&a>=c) return(a); else if(b>=a&&b>=c) return(b); else return(c); } void main(){/加一个void,否则警告。不同编译器有不同处理/ int a,b,c,i=1,j,k; scanf("%d%d%d",&a,&b,&c); k=fun(a,b,c);/最大值是k/ while(1){ j=ki; if(j%a==0&&j%b==0&&j%c==0) break;/j能被3个数整除/ i++; } printf("%d",j);/j是最小公倍数/ return; }

#include"stdioh"

main()

{

int m,n,t,h,a,b,q;

printf("("%d%d",a=m;

b=n

{ h=n;n=m%n;m=n;}

a=a/n;b=b/n;q公约数为 %d,最小公倍数

#define  _CRT_SECURE_NO_WARNINGS

#include <stdlibh>

#include <stringh>

#include <stdioh>

int  max1(int a ,int b){

if (a<=b)

return b;

else return a;

}

void main()

{

int a=6;

int b=4;

int max;

printf ("请输入a b 的值:");

scanf("%d %d",&a,&b);

max = max1(a,b);

while (max%a!=0|| max%b!=0){

max++;

}

printf("最小公倍数为: %d\n",max);

system("pause");

}

以上就是关于急求用 c语言编写一个程序求两个数的最小公倍数,越简单越好。全部的内容,包括:急求用 c语言编写一个程序求两个数的最小公倍数,越简单越好。、编写程序求最小公倍数、求三个数的最小公倍数的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9455225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存