| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2437 人关注过本帖
标题:[求助]求最大公约数
取消只看楼主 加入收藏
cszero
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-8
收藏
 问题点数:0 回复次数:4 
[求助]求最大公约数

import javax.swing.JOptionPane;

public class findLCM {
public static void main(String[] args) {
String input1 = JOptionPane.showInputDialog(null,
"Enter the first number:", "input",
JOptionPane.QUESTION_MESSAGE);
int num1 = Integer.parseInt(input1);
String input2 = JOptionPane.showInputDialog(null,
"Enter the second number:", "input",
JOptionPane.QUESTION_MESSAGE);
int num2 = Integer.parseInt(input2);
double result = seekFactor(num1, num2);
JOptionPane.showMessageDialog(null, num1 + "," + num2 + "最大公约数为:"
+ result, "求最大公约数", JOptionPane.INFORMATION_MESSAGE);
}

static double seekFactor(int n1, int n2) {
int[][] answer1 = Factor(n1);
int[][] answer2 = Factor(n2);
printstring0(answer1);
printstring1(answer1);
double result = findResult(answer1, answer2);

return result;

}

static void printstring0(int[][] an) {
for (int i = 0; i < an.length; i++)
System.out.print(an[i][0]);
}

static void printstring1(int[][] an) {
for (int i = 0; i < an.length; i++)
System.out.println(an[i][1]);
}

static int[][] Factor(int n1) {
int i = -1, k = 2;
int[][] factor = new int[n1 / 2][2];
for (; k <= Math.sqrt(n1); k++ ) {
i++;
while (n1 % k == 0) {
n1 = n1 / k;
factor[i][0] = k;
factor[i][1] += 1;

}
}
return factor;
}

static double findResult(int[][] ans1, int[][] ans2) {
int i = 0, j = 0, k = 0;
double result = 0;
int[][] total = new int[60][2];
while (ans1[i][0] != 0 && ans2[j][0] != 0) {
if (ans1[i][0] == ans2[j][0]) {
if (ans1[i][1] >= ans2[j][1]) {
total[k][0] = ans1[i][0];
total[k][1] = ans1[i][1];
k++;
i++;
j++;
} else {
total[k][0] = ans1[i][0];
total[k][1] = ans2[j][1];
k++;
i++;
j++;
}
} else {
total[k][0] = ans1[i][0];
total[k][1] = ans1[i][1];
k++;
i++;
j++;
total[k][0] = ans2[j][0];
total[k][1] = ans2[j][1];
k++;
i++;
j++;
}
}

for (int m = 0; m < total.length; m++)
result = Math.pow(total[m][0], total[m][1]);
return result;
}

}

我做了好久都不能通过……希望有哪位好心人帮帮我……谢谢!!

搜索更多相关主题的帖子: 最大公约数 
2006-04-08 20:38
cszero
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-8
收藏
得分:0 
最后一步应该有问题…………但是不知道why连求因子都求不到……555…………
2006-04-08 20:40
cszero
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-8
收藏
得分:0 

谢谢你的答案!……但是那时老师叫我们做的题目吖……想了很久了……555…………

[此贴子已经被作者于2006-4-9 11:57:16编辑过]

2006-04-09 11:56
cszero
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-8
收藏
得分:0 
Who can help me??thx~
2006-04-09 17:51
cszero
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-8
收藏
得分:0 
[CODE]
要计算两个数的最小公倍数,首先为每个整数创建一个素数因子表。表的第一列由所有素数因子组成,表的第二列是每个因子出现的次数。例如,120=2*2*2*3*5、150=2*3*5*5,因此120和150的素数因子表为
120的因子
次数
2
3
3
1
5
1
150的因子
次数
2
1
3
1
5
2
两个数的最小公倍数等于各因子出现的最大次数的乘积。例如120和150的最小公倍数等于2*2*2*3*5*5。
o对你程序用以下数据进行测试
(120,150)
     (7,14)
     (7,8)
     (1,2)
(345,455)
这道题要求用JAVA编程……我调了很久都做不出来,希望有热心人帮帮我…………谢谢!
我是大一学生,刚学java,觉得很有趣,我很想学好它!哈哈。。。希望有好心人指教一下我应该如何去学……
顺便问一下:JAVA的程序如果有错,应怎么办?(例如应该如何调试等等方法)谢谢!!
[/CODE]
2006-04-09 21:25
快速回复:[求助]求最大公约数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017284 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved