everycode
everycode copied to clipboard
2014年11月29日—0.0—30日 D6
/* 创建一个`divisors`函数
* 根据传入参数,返回一个包含这个参数的所有除数的数组(1和本身除外)
* param1 Number
* return Array
* e.g.
* divisors(12); //=> [2,3,4,6]
* divisors(25); //=> [5]
* divisors(13); //=> "13 is prime"
*/
function divisors(number){
return array
}
function divisors(num) {
return (num ^ 1) ? new Array(num - 2).join("|").split("").reduce(function(arr) {
return (arr.push(arr.length + 2), arr);
}, []).reduce(function(res, n) {
return (num % n) ? res : (res.push(n), res);
}, []) : [];
}
感觉换汤不换药了,代码越来越没创造性了。
function divisors(num){
var arr=[];
for(var i=2;i<=parseInt(num/2);i++){
if(num%i==0){
arr.push(i);
}
}
if(arr.length==0){return num+" is prime"}
return arr;
}
看楼上的代码,总是压力山大~~~@XadillaX 么么哒
function divisors(number) {
var results = [];
for (var i = 2; i < number; i++) {
(number % i === 0) && results.push(i);
}
return results.length ? results : number + ' is prime';
}
// 测试用例
divisors(12); //=> [2,3,4,6]
divisors(25); //=> [5]
divisors(13); //=> "13 is prime"
function divisors(num){
var i = 2,arr = [];
for(; i < num/2; i++){
if(num % i == 0){
arr.push(i);
}
}
return arr.length>0 ? arr : num + ' is prime';
}
function divisors_sqrt(num){
var arr = [];
for(var i = 2;i<=Math.sqrt(num);i++){
if(num%i === 0){
arr.push(i);
arr.push(num/i);
}
}
return arr;
}
没去去出重复
这不是明天和后天的题目么,你们太没时间观念。 我的最佳方案也就和@think2011一样。
function divisors(number) {
var array = [];
for(var i=2;i<number;i++){
number%i==0 && array.push(i);
}
if(array.length==0)
return number+" is prime";
return array
}
看到到@XadillaX代码赶脚要跪了~不过还是分享下自己的方案~
结合网上找到的n个元素数组中取出m个元素重新弄的一份代码(测试得到 这种方式有问题)
var arr =[];
var result = [];
function divisors(num){
prime(num);
if(arr.length <=1){
return num + " is prime";
}else if(arr.length ===2){
return arr;
}else{
getAllComb(arr);
return result;
}
}
//根据质因数对程序重新进行了修改
function prime(num){
//if(num/2 >0 && num%2 ===0 ){
// arr.push(2);
// prime(num/2);
// return;
//}if(num/3 >0 && num%3 ===0 ){
// arr.push(3);
// prime(num/3);
// return;
//}if(num/5 >0 && num%5 ===0 ){
// arr.push(5);
// prime(num/5);
// return;
//}if(num/7 >0 && num%7 ===0 ){
// arr.push(7);
// prime(num/7);
// return;
//}else if(num !== 1){
// arr.push(num);
// return;
//}
console.log(num);
for (var i = 2; i < num; i++) {
if(num%i === 0){
arr.push(i);
prime(num/i);
//console.log(num/i)
return;
}
}
arr.push(num);
}
function getAllComb(myarr)
{
var len=myarr.length;
for(var i=1;i<=len-1;i++){
getComb(myarr,len,i);
}
}
/**
* 从有n个元素的数组中取出m个元素
* @param myarr
* @param n
* @param m
* @param rs
*/
function getComb(myarr,n,m,rs)
{
if(rs==null)
rs = new Array();
for(var i=n;i>=m;i--){
rs[m-1]=myarr[i-1]; //取出第n个元素作为组合的第一个元素
if(m>1)
getComb(myarr,i-1,m-1,rs); //递归,在n-1个元素中取m-1个元素,直到取出最后一个元素
var comb = rs.reduce(function(v,k){
return v*k;
});
if(!checkExist(result,comb))
result.push(comb);
}
}
function checkExist(myarr,e)
{
for(var i=0;i<myarr.length;i++)
if(e==myarr[i]) return true;
return false;
}
//测试
console.log(divisors(12));
console.log(divisors(400000));
@XadillaX 大神看着好累啊