c语言用质因数分解法求最大公约数,分解质因数法求最大公约数(javascrip实现)

//判断是否为质数------------------------------------------------------

function isPrime(n) {

for (var i = n - 1; i > 1; i--) {

if (n % i == 0) {

return false;

}

}

return true;

}

// ---------------------------------------------------

//求出一个数(非质数)的质因数--------------------------------------------------------

function primeArray(n, array) {

array = new Array();

for (var i = 2; i < n; i++) {

//是否为质数

if (isPrime(i)) {

var temp_R = n % i;//余数

var temp_c = n / i;//商

//是否整除

if (temp_R == 0) {

array.push(i);

if (!isPrime(temp_c)) {

//商不为质数

array = array.concat(primeArray(temp_c, array));

} else {

array.push(temp_c);

}

break;

}

}

}

return array;

}

// 查找两个数组的相同部分-----------------------------------

function findSamePart(a, b) {

var temp = new Array();

for (var i = 0; i < a.length; i++) {

for (var j = 0; j < b.length; j++) {

if (a[i] == b[j]) {

temp.push(a[i]);

a.splice(i, 1);

b.splice(i, 1);

i =0;

continue;

}

}

}

return temp;

}

//---------------------------------------------------

// 分解质因数求最大公因数-----------------

function gcd(a, b) {

if (isPrime(a) || isPrime(b)) {

return 1;

}

var a = parseInt($("#a").val());

var b = parseInt($("#b").val());

var a_array = new Array();

var b_array = new Array();

var a_array = primeArray(a, a_array);

var b_array = primeArray(b, b_array);

var temp = findSamePart(a_array, b_array);

var sum = 1;

for (var i = 0; i < temp.length; i++) {

sum = sum * temp[i];

}

return sum;

}

分解质因数法

function demo() {

var a = $("#a").val();

var b = $("#b").val();

alert(a+"和"+b+"的最大公约数是"+gcd(a, b));

}

原文:http://www.cnblogs.com/nova-/p/4357752.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值