>  기사  >  웹 프론트엔드  >  n_jquery 내에서 완전수를 찾는 jQuery 메서드

n_jquery 내에서 완전수를 찾는 jQuery 메서드

WBOY
WBOY원래의
2016-05-16 15:53:001548검색

이 기사의 예에서는 jQuery가 n 내에서 완전수를 찾는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

숫자의 완전성은 인수(원래 숫자를 나눌 수 있는 숫자)에 따라 달라집니다.

예: 12의 약수는 1, 2, 3, 4, 6입니다. 어떤 숫자의 약수의 합이 숫자 자체보다 클 때 그 숫자를 "잉여" 숫자라고 합니다. 따라서 12는 인수의 합이 16이 되기 때문에 잉여 숫자입니다. 반면에, 어떤 숫자의 약수들의 합이 숫자 자체보다 작을 때 그 숫자를 "결핍" 숫자라고 합니다. 따라서 10은 요소(1, 2, 5)의 합이 8이 되기 때문에 적자 숫자입니다.

가장 의미 있고 희귀한 숫자는 인수의 합이 정확히 그 자체인 숫자입니다.

-- "페르마의 마지막 정리"

완벽한 숫자를 찾으려면 먼저 숫자의 인수가 무엇인지 검토해야 합니다.

인수: 정수 n을 m으로 나누면 결과는 나머지가 없는 정수이므로 m은 n의 인수라고 합니다. 이 관계는 피제수, 제수, 몫이 모두 정수이고 나머지가 0인 경우에만 적용된다는 점에 유의해야 합니다. 반대로, 우리는 n을 m의 배수라고 부릅니다.

<!DOCTYPE html> 
<html> 
<head> 
 <meta charset="utf-8"> 
 <title>JS Bin</title> 
</head> 
<body> 
 <input type="text" id="num"/> 
 <button id="calc">计算</button> 
 <p id="result"></p> 
</body> 
</html> 

/* 
 * 寻找n以内的完美数 
 */ 
function $(id){ 
 return document.getElementById(id); 
} 
//判断是否为正整数 
function isIntNum(number){ 
 var num = number; 
 if((!isNaN(num)) && (parseInt(num) == parseFloat(num))){ 
  return true; 
 }else{ 
  return false; 
 } 
} 
$("calc").addEventListener("click",function(){ 
 var inputNum = $("num").value, 
   $result = $("result"), 
   factorArr = [], 
   resultArr = [], 
   i = 0, 
   j = 0, 
   sum = 0; 
 //检验输入是否为正整数 
 if(isIntNum(inputNum)){ 
  console.log("right"); 
 }else{ 
  $result.innerHTML = "输入错误:请输入正整数"; 
  return false; 
 } 
 //遍历所有数字 
 for(var k = 1;k < inputNum;k++){ 
  //每次计算需重置变量 
  factorArr.length = 0; 
  sum = 0; 
  //寻找当前数字的因数 
  for(i = 1;i < Math.floor(k/2)+1; i++){ 
   if(k % i === 0){ 
    factorArr.push(i); 
   } 
  } 
  //计算因数之和 
  for(var m = 0;m < factorArr.length;m++){ 
   sum += factorArr[m]; 
  } 
  //因素和等于当前数,则符合完全数标准 
  if(sum === k){ 
   resultArr.push(k); 
  } 
 } 
 $result.innerHTML=resultArr; 
});

이 기사가 모든 사람의 jQuery 프로그래밍에 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.