Алгоритмы (Javascript): различия между версиями

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску
 
(не показано 9 промежуточных версий этого же участника)
Строка 67: Строка 67:
 
=== Вывод всех двухзначных чисел, кратных 5 ===
 
=== Вывод всех двухзначных чисел, кратных 5 ===
 
<syntaxhighlight lang="javascript" line>
 
<syntaxhighlight lang="javascript" line>
 +
let x = 10
  
 +
while (x < 100) {
 +
    console.log(x)
 +
    x += 5
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Вывод n первых чисел Фибоначчи ===
 
=== Вывод n первых чисел Фибоначчи ===
 
<syntaxhighlight lang="javascript" line>
 
<syntaxhighlight lang="javascript" line>
 +
let n = prompt('Введите число n')
  
 +
let a = 0
 +
let b = 1
 +
console.log(a)
 +
console.log(b)
 +
for(let i = 0; i < n-2; i++) {
 +
    let tmp = a
 +
    a = b
 +
    b = tmp + b
 +
    console.log(b)
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти НОД(A,B), используя алгоритм Евклида: ===
 
=== Найти НОД(A,B), используя алгоритм Евклида: ===
 
<syntaxhighlight lang="javascript" line>
 
<syntaxhighlight lang="javascript" line>
 +
let a = parseInt(prompt('Введите число a'))
 +
let b = parseInt(prompt('Введите число b'))
  
 +
while (b !== 0) {
 +
    let tmp = a
 +
    a = b
 +
    b = tmp % b
 +
}
 +
 +
console.log('НОД(a,b) = ' + a)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти сумму цифр целого числа m ===
 
=== Найти сумму цифр целого числа m ===
 
<syntaxhighlight lang="javascript" line>
 
<syntaxhighlight lang="javascript" line>
 +
let m = parseInt(prompt('Введите число m'))
  
 +
let n = m
 +
let sum = 0
 +
while (n !== 0) {
 +
    sum += n % 10
 +
    n = Math.floor(n / 10)
 +
}
 +
 +
console.log('Сумма цифр числа ' + m + ' = ' + sum)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти max из введенных чисел ===
 
=== Найти max из введенных чисел ===
 
<syntaxhighlight lang="javascript" line>
 
<syntaxhighlight lang="javascript" line>
 +
let count = prompt('Введите количество чисел')
  
 +
let max = 0
 +
for (let i=0; i < count; i++) {
 +
    let x = parseInt(prompt('Введите число ' + (i+1).toString()))
 +
    if (i === 0) {
 +
        max = x
 +
    } else if (x > max) {
 +
        max = x
 +
    }
 +
}
 +
 +
console.log('max = ' + max)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти min, удовлетворяющее условию p(x) ===
 
=== Найти min, удовлетворяющее условию p(x) ===
 
<syntaxhighlight lang="javascript" line>
 
<syntaxhighlight lang="javascript" line>
 +
function p(x) {
 +
    return x > 0
 +
}
 +
 +
let count = prompt('Введите количество чисел')
 +
let min = 0
 +
let found = false
 +
 +
for (let i=0; i < count; i++) {
 +
    let x = parseInt(prompt('Введите число ' + (i+1).toString()))
 +
    if (found === false && p(x)) {
 +
        min = x
 +
        found = true
 +
    } else if (x < min && p(x)) {
 +
        min = x
 +
    }
 +
}
  
 +
console.log('min & p(x) = ' + min)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Есть ли среди введенных число k? ===
 
=== Есть ли среди введенных число k? ===
 
<syntaxhighlight lang="javascript" line>
 
<syntaxhighlight lang="javascript" line>
 +
let count = prompt('Введите количество чисел')
 +
let needle  = prompt('Введите число для поиска')
 +
 +
let found = false
  
 +
for (let i=0; i < count; i++) {
 +
    let x = prompt('Введите число ' + (i+1).toString())
 +
    if (x === needle) {
 +
        found = true
 +
        break
 +
    }
 +
}
 +
 +
console.log(found ?
 +
    "Число " + needle + " было введено." :
 +
    "Число " + needle + " не было введено.")
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Является ли число N>1 простым? ===
 
=== Является ли число N>1 простым? ===
 
<syntaxhighlight lang="javascript" line>
 
<syntaxhighlight lang="javascript" line>
 +
let n = parseInt(prompt('Введите число n'))
  
 +
let isPrime = true
 +
for (let i = 2; i <= Math.floor(Math.sqrt(n)); i++) {
 +
    console.log('i = ' + i)
 +
    if (n % i === 0) {
 +
        isPrime = false
 +
        break
 +
    }
 +
}
 +
 +
console.log(isPrime ?
 +
    "Число " + n + " простое." :
 +
    "Число " + n + " составное.")
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Разложение числа на простые множители ===
 
=== Разложение числа на простые множители ===
 
<syntaxhighlight lang="javascript" line>
 
<syntaxhighlight lang="javascript" line>
 +
let x = parseInt(prompt('Введите число x'))
 +
 +
let i = 2
 +
let res = x + ' = 1'
 +
 +
while (x !== 1) {
 +
    if (x % i === 0) {
 +
        res += ' * ' + i
 +
        x = Math.floor(x / i)
 +
    } else {
 +
        i++
 +
    }
 +
}
  
 +
console.log(res)
 
</syntaxhighlight>
 
</syntaxhighlight>

Текущая версия на 15:34, 27 июня 2021

Код программ

Сумма вводимых целых чисел

1 let count = prompt('Введите число слагаемых')
2 
3 let sum = 0
4 for (let i=0; i < count; i++) {
5     let x = parseInt(prompt('Введите число ' + (i+1).toString()))
6     sum += x
7 }
8 
9 console.log('sum = ' + sum)

Произведение целых чисел

1 let count = prompt('Введите число множителей')
2 
3 let product = 1
4 for (let i=0; i < count; i++) {
5     let x = parseInt(prompt('Введите число ' + (i+1).toString()))
6     product *= x
7 }
8 
9 console.log('product = ' + product)

Сколько нечетных среди n введенных

 1 let count = prompt('Введите количество чисел')
 2 
 3 let oddCount = 0
 4 for (let i=0; i < count; i++) {
 5     let x = parseInt(prompt('Введите число ' + (i+1).toString()))
 6     if (x % 2 === 1) {
 7         oddCount++
 8     }
 9 }
10 
11 console.log('oddCount = ' + oddCount)

Защита от неверного ввода

1 let x = prompt('Введите x>0')
2 
3 while (x <= 0) {
4     alert("Неверный ввод")
5     x = prompt('Введите x>0')
6 }
7 
8 alert("x = " + x)

Вывод 10 первых степеней двойки

1 let x = 2
2 let n = 10
3 
4 for (let i = 0; i < n; i++) {
5     console.log("2 ** " + (i+1) + " = " + x)
6     x *= 2
7 }

Вывод всех двухзначных чисел, кратных 5

1 let x = 10
2 
3 while (x < 100) {
4     console.log(x)
5     x += 5
6 }

Вывод n первых чисел Фибоначчи

 1 let n = prompt('Введите число n')
 2 
 3 let a = 0
 4 let b = 1
 5 console.log(a)
 6 console.log(b)
 7 for(let i = 0; i < n-2; i++) {
 8     let tmp = a
 9     a = b
10     b = tmp + b
11     console.log(b)
12 }

Найти НОД(A,B), используя алгоритм Евклида:

 1 let a = parseInt(prompt('Введите число a'))
 2 let b = parseInt(prompt('Введите число b'))
 3 
 4 while (b !== 0) {
 5     let tmp = a
 6     a = b
 7     b = tmp % b
 8 }
 9 
10 console.log('НОД(a,b) = ' + a)

Найти сумму цифр целого числа m

 1 let m = parseInt(prompt('Введите число m'))
 2 
 3 let n = m
 4 let sum = 0
 5 while (n !== 0) {
 6     sum += n % 10
 7     n = Math.floor(n / 10)
 8 }
 9 
10 console.log('Сумма цифр числа ' + m + ' = ' + sum)

Найти max из введенных чисел

 1 let count = prompt('Введите количество чисел')
 2 
 3 let max = 0
 4 for (let i=0; i < count; i++) {
 5     let x = parseInt(prompt('Введите число ' + (i+1).toString()))
 6     if (i === 0) {
 7         max = x
 8     } else if (x > max) {
 9         max = x
10     }
11 }
12 
13 console.log('max = ' + max)

Найти min, удовлетворяющее условию p(x)

 1 function p(x) {
 2     return x > 0
 3 }
 4 
 5 let count = prompt('Введите количество чисел')
 6 let min = 0
 7 let found = false
 8 
 9 for (let i=0; i < count; i++) {
10     let x = parseInt(prompt('Введите число ' + (i+1).toString()))
11     if (found === false && p(x)) {
12         min = x
13         found = true
14     } else if (x < min && p(x)) {
15         min = x
16     }
17 }
18 
19 console.log('min & p(x) = ' + min)

Есть ли среди введенных число k?

 1 let count = prompt('Введите количество чисел')
 2 let needle  = prompt('Введите число для поиска')
 3 
 4 let found = false
 5 
 6 for (let i=0; i < count; i++) {
 7     let x = prompt('Введите число ' + (i+1).toString())
 8     if (x === needle) {
 9         found = true
10         break
11     }
12 }
13 
14 console.log(found ?
15     "Число " + needle + " было введено." :
16     "Число " + needle + " не было введено.")

Является ли число N>1 простым?

 1 let n = parseInt(prompt('Введите число n'))
 2 
 3 let isPrime = true
 4 for (let i = 2; i <= Math.floor(Math.sqrt(n)); i++) {
 5     console.log('i = ' + i)
 6     if (n % i === 0) {
 7         isPrime = false
 8         break
 9     }
10 }
11 
12 console.log(isPrime ?
13     "Число " + n + " простое." :
14     "Число " + n + " составное.")

Разложение числа на простые множители

 1 let x = parseInt(prompt('Введите число x'))
 2 
 3 let i = 2
 4 let res = x + ' = 1'
 5 
 6 while (x !== 1) {
 7     if (x % i === 0) {
 8         res += ' * ' + i
 9         x = Math.floor(x / i)
10     } else {
11         i++
12     }
13 }
14 
15 console.log(res)