初级算法 数学
Fizz Buzz
js
var fizzBuzz = function(n) {
let result = []
for(let i = 1; i <= n; i++){
let temp = i.toString()
let fizz = temp % 3 == 0
let buzz = temp % 5 == 0
if(fizz) temp = "Fizz"
if(buzz) temp = "Buzz"
if(fizz && buzz) temp = "FizzBuzz"
result.push(temp)
}
return result;
};
计数质数
要得到自然数n以内的全部素数,必须把不大于根号n 的所有素数的倍数剔除,剩下的就是素数。
埃拉托斯特尼筛法
js
var countPrimes = function(n) {
let arr = new Array(n).fill(0)
let count = 0
for(let i = 2 ; i < n; i++){
if(arr[i]) continue
count++
for(let j = i * i; j < n; j+=i){
arr[j] = 1
}
}
return count
};
3的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x
js
var isPowerOfThree = function(n) {
return (Math.log(n) / Math.log(3)) % 1 < 0.0000000001
};
罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
给定一个罗马数字,将其转换成整数。
题目数据保证 s 是一个有效的罗马数字,且表示整数在范围 [1, 3999] 内
js
var romanToInt = function(s) {
let stack = s.split("");
const map = {
"I": 1,
"V": 5,
"X": 10,
"L": 50,
"C": 100,
"D": 500,
"M": 1000,
}
let result = 0
let max = 0
while(stack.length){
let char = stack.pop()
let num = map[char]
if ( num >= max ) {
result += num
max = num
} else {
result -= num
}
}
return result;
};