一、判斷是不是質數.
質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。
經常被問這個問題的原因:
質數被利用在密碼學上,所謂的公鑰就是將想要傳遞的資訊在編碼時加入質數,編碼之後傳送給收信人,任何人收到此資訊後,若沒有此收信人所擁有的金鑰,則解密的過程中(實為尋找素數的過程),將會因為找質數的過程(分解質因數)過久,使即使取得資訊也會無意義。
在一般領域,對正整數n,如果用2到Math.sqrt(n)之間的所有整數去除,均無法整除,則n為質數。
function isPrime1(n){
if(n>1 && n<=3){return true}
else{
for(var i=2;i<Math.sqrt(n);i++){
if(n%i==0){return false;}
}
return true;
}
};
複製程式碼
二、陣列去重
1.最簡單的實現:
function repeat(arr){
let arr2 = [];
for(let i=0; i<arr.length; i++){
if(!arr2.includes(arr[i])){
arr2.push(arr[i]);
}
}//(遍歷結束)
return arr2;
}
複製程式碼
2.hash的實現:
function repeat(arr){
let hash={};
for(var i=0; i<arr.length; i++){
if(!hash[arr[i]]){
hash[arr[i]]=1;//將陣列每一個元素值都作為屬性key,來儲存value為1
}
}
var i=0;
var arr2=[];
for(arr2[i++] in hash);
return arr2;
}
複製程式碼
發一個我自己寫的一個坑程式碼:(這段程式碼少了一個結尾分號,但是結果卻沒有達到預期)
function repeat(arr){
let hash={};
for(var i=0; i<arr.length; i++){
hash[arr[i]]=1;
}
var i=0;
var arr2=[];
for(arr2[i++] in hash)
return arr2;
}
複製程式碼
三、統計字串中每種字元出現的次數,出現次數最多的是? 出現?次
只有一個字母會出現最多次
function count(str){
for(var i=0,hash={};i<str.length;i++){
if(hash[str[i]]){
hash[str[i]]++
}else{
hash[str[i]]=1;
}
}
let code = '',num = 1;
for(let i in hash){
if(hash[i] > num){
num = hash[i];
code = i;
}
}
console.info(code,num);
}
複製程式碼
有多個字母會出現多次
function count(str){
for(var i=0,hash={};i<str.length;i++){
if(hash[str[i]]){
hash[str[i]]++
}else{
hash[str[i]]=1;
}
}
let code = '',num = 1;
for(let i in hash){
if(hash[i] > num){
num = hash[i];
code = i;
}
}
for(let i in hash){
if(hash[i]==num){arr.push(i)}
}
console.info(arr,num);
}
複製程式碼