一、判断是不是质数.
质数又称素数。一个大于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);
}