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

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску
 
(не показано 8 промежуточных версий этого же участника)
Строка 87: Строка 87:
 
=== Вывод всех двухзначных чисел, кратных 5 ===
 
=== Вывод всех двухзначных чисел, кратных 5 ===
 
<syntaxhighlight lang="kotlin" line>
 
<syntaxhighlight lang="kotlin" line>
 +
fun main() {
 +
    var x = 10
  
 +
    while (x < 100) {
 +
        println(x)
 +
        x += 5
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Вывод n первых чисел Фибоначчи ===
 
=== Вывод n первых чисел Фибоначчи ===
 
<syntaxhighlight lang="kotlin" line>
 
<syntaxhighlight lang="kotlin" line>
 +
fun main() {
 +
    println("Введите число n (n > 1): ")
 +
    val n: Int = readLine()!!.toInt()
  
 +
    var a: Int = 1
 +
    var b: Int = 1
 +
    print("$a $b ")
 +
    for (i in 1..n - 2) {
 +
        val tmp = a
 +
        a = b
 +
        b += tmp
 +
        print("$b ")
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти НОД(A,B), используя алгоритм Евклида: ===
 
=== Найти НОД(A,B), используя алгоритм Евклида: ===
 
<syntaxhighlight lang="kotlin" line>
 
<syntaxhighlight lang="kotlin" line>
 +
fun main() {
 +
    println("Введите целое число A:")
 +
    var a: Int = readLine()!!.toInt()
 +
    println("Введите целое число B:")
 +
    var b: Int = readLine()!!.toInt()
  
 +
    while (b != 0) {
 +
        val tmp = a
 +
        a = b
 +
        b = tmp % b
 +
    }
 +
 +
    println("НОД(A, B) = $a")
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти сумму цифр целого числа m ===
 
=== Найти сумму цифр целого числа m ===
 
<syntaxhighlight lang="kotlin" line>
 
<syntaxhighlight lang="kotlin" line>
 +
fun main() {
 +
    println("Введите целое число m:")
 +
    val m: Int = readLine()!!.toInt()
 +
 +
    var sum = 0
 +
    var m1 = Math.abs(m)
 +
 +
    while (m1 > 0) {
 +
        sum += m1 % 10
 +
        m1 /= 10
 +
    }
  
 +
    println("Сумма цифр числа $m равна $sum")
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти max из введенных чисел ===
 
=== Найти max из введенных чисел ===
 
<syntaxhighlight lang="kotlin" line>
 
<syntaxhighlight lang="kotlin" line>
 +
fun main() {
 +
    print("Введите количество чисел: ")
 +
    val count: Int = readLine()!!.toInt()
 +
 +
    var i = 0
 +
    print("Введите число " + (i + 1) + ": ")
 +
    var num: Int = readLine()!!.toInt()
 +
    var max = num
  
 +
    i = 1
 +
    while (i < count) {
 +
        print("Введите число " + (i + 1) + ": ")
 +
        num = readLine()!!.toInt()
 +
        if (num > max) {
 +
            max = num
 +
        }
 +
        i++
 +
    }
 +
 +
    println("Максимальное число = $max")
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти min, удовлетворяющее условию p(x) ===
 
=== Найти min, удовлетворяющее условию p(x) ===
 
<syntaxhighlight lang="kotlin" line>
 
<syntaxhighlight lang="kotlin" line>
 +
fun p(x: Int): Boolean {
 +
    return x > 0
 +
}
 +
 +
fun main() {
 +
    print("Введите количество чисел: ")
 +
    val count: Int = readLine()!!.toInt()
 +
 +
    var exists = false
 +
    var min = Int.MAX_VALUE
  
 +
    for (i in 0 until count) {
 +
        print("Введите число " + (i + 1) + ": ")
 +
        val num: Int = readLine()!!.toInt()
 +
        if (num < min && p(num)) {
 +
            min = num
 +
            exists = true
 +
        }
 +
    }
 +
 +
    if (exists) {
 +
        println("Минимальное из чисел удовлетворяющих условию = $min")
 +
    } else {
 +
        println("Нет чисел, удовлетворяющих условию")
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Есть ли среди введенных число k? ===
 
=== Есть ли среди введенных число k? ===
 
<syntaxhighlight lang="kotlin" line>
 
<syntaxhighlight lang="kotlin" line>
 +
fun main() {
 +
    var exists = false
 +
 +
    print("Введите количество чисел: ")
 +
    val count: Int = readLine()!!.toInt()
 +
 +
    print("Введите искомое число: ")
 +
    val k: Int = readLine()!!.toInt()
  
 +
    for (i in 0 until count) {
 +
        print("Введите число " + (i + 1) + ": ")
 +
        val num: Int = readLine()!!.toInt()
 +
        if (num == k) {
 +
            exists = true
 +
            break
 +
        }
 +
    }
 +
 +
    if (exists) {
 +
        println("Число $k было введено")
 +
    } else {
 +
        println("Число $k не было введено")
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Является ли число N>1 простым? ===
 
=== Является ли число N>1 простым? ===
 
<syntaxhighlight lang="kotlin" line>
 
<syntaxhighlight lang="kotlin" line>
 +
fun main() {
 +
    print("Введите число n > 1: ")
 +
    val n: Int = readLine()!!.toInt()
 +
 +
    var isPrime = true
 +
    for (i in 2..Math.round(Math.sqrt(n.toDouble()))) {
 +
        if (n % i == 0L) {
 +
            isPrime = false
 +
            break
 +
        }
 +
    }
  
 +
    if (isPrime) {
 +
        println("Число $n является простым")
 +
    } else {
 +
        println("Число $n является составным")
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Разложение числа на простые множители ===
 
=== Разложение числа на простые множители ===
 
<syntaxhighlight lang="kotlin" line>
 
<syntaxhighlight lang="kotlin" line>
 +
fun main() {
 +
    print("Введите число x > 1: ")
 +
    var x: Int = readLine()!!.toInt()
  
 +
    var i = 2
 +
    print("$x = 1")
 +
    do {
 +
        if (x % i == 0) {
 +
            print(" * $i")
 +
            x /= i
 +
        } else {
 +
            i++
 +
        }
 +
    } while (x != 1)
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>

Текущая версия на 12:16, 8 июля 2021

Код программ

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

 1 fun main() {
 2     print("Введите число слагаемых: ")
 3     val n = readLine()!!.toInt()
 4 
 5     var sum = 0
 6     for (i in 0 until n) {
 7         print("Введите число " + (i + 1) + ": ")
 8         val num: Int = readLine()!!.toInt()
 9         sum += num
10     }
11 
12     println("Сумма = $sum");
13 }

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

 1 fun main() {
 2     print("Введите число множителей: ")
 3     val n = readLine()!!.toInt()
 4 
 5     var product  = 1.0
 6     for (i in 0 until n) {
 7         print("Введите множитель " + (i + 1) + ": ")
 8         val num: Int = readLine()!!.toInt()
 9         product *= num
10     }
11 
12     println("Произведение = $product");
13 }

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

 1 import kotlin.math.abs
 2 
 3 fun main() {
 4     print("Введите количество чисел: ")
 5     val n = readLine()!!.toInt()
 6 
 7     var count  = 0
 8     for (i in 0 until n) {
 9         print("Введите число " + (i + 1) + ": ")
10         val num: Int = readLine()!!.toInt()
11         if (abs(num % 2) == 1) {
12             count++;
13         }
14     }
15 
16     println("Количество нечётных чисел = $count");
17 }

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

 1 fun main() {
 2     var x: Int
 3 
 4     do {
 5         print("Введите x > 0: ")
 6 
 7         x = readLine()!!.toInt()
 8         if (x <= 0) {
 9             println("Неверный ввод.")
10         }
11     } while (x <= 0)
12     println("x = $x")
13 }

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

1 fun main() {
2     var x = 2
3 
4     for (i in 1..10) {
5         println("2 ** $i = $x")
6         x *= 2
7     }
8 }

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

1 fun main() {
2     var x = 10
3 
4     while (x < 100) {
5         println(x)
6         x += 5
7     }
8 }

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

 1 fun main() {
 2     println("Введите число n (n > 1): ")
 3     val n: Int = readLine()!!.toInt()
 4 
 5     var a: Int = 1
 6     var b: Int = 1
 7     print("$a $b ")
 8     for (i in 1..n - 2) {
 9         val tmp = a
10         a = b
11         b += tmp
12         print("$b ")
13     }
14 }

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

 1 fun main() {
 2     println("Введите целое число A:")
 3     var a: Int = readLine()!!.toInt()
 4     println("Введите целое число B:")
 5     var b: Int = readLine()!!.toInt()
 6 
 7     while (b != 0) {
 8         val tmp = a
 9         a = b
10         b = tmp % b
11     }
12 
13     println("НОД(A, B) = $a")
14 }

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

 1 fun main() {
 2     println("Введите целое число m:")
 3     val m: Int = readLine()!!.toInt()
 4 
 5     var sum = 0
 6     var m1 = Math.abs(m)
 7 
 8     while (m1 > 0) {
 9         sum += m1 % 10
10         m1 /= 10
11     }
12 
13     println("Сумма цифр числа $m равна $sum")
14 }

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

 1 fun main() {
 2     print("Введите количество чисел: ")
 3     val count: Int = readLine()!!.toInt()
 4 
 5     var i = 0
 6     print("Введите число " + (i + 1) + ": ")
 7     var num: Int = readLine()!!.toInt()
 8     var max = num
 9 
10     i = 1
11     while (i < count) {
12         print("Введите число " + (i + 1) + ": ")
13         num = readLine()!!.toInt()
14         if (num > max) {
15             max = num
16         }
17         i++
18     }
19 
20     println("Максимальное число = $max")
21 }

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

 1 fun p(x: Int): Boolean {
 2     return x > 0
 3 }
 4 
 5 fun main() {
 6     print("Введите количество чисел: ")
 7     val count: Int = readLine()!!.toInt()
 8 
 9     var exists = false
10     var min = Int.MAX_VALUE
11 
12     for (i in 0 until count) {
13         print("Введите число " + (i + 1) + ": ")
14         val num: Int = readLine()!!.toInt()
15         if (num < min && p(num)) {
16             min = num
17             exists = true
18         }
19     }
20 
21     if (exists) {
22         println("Минимальное из чисел удовлетворяющих условию = $min")
23     } else {
24         println("Нет чисел, удовлетворяющих условию")
25     }
26 }

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

 1 fun main() {
 2     var exists = false
 3 
 4     print("Введите количество чисел: ")
 5     val count: Int = readLine()!!.toInt()
 6 
 7     print("Введите искомое число: ")
 8     val k: Int = readLine()!!.toInt()
 9 
10     for (i in 0 until count) {
11         print("Введите число " + (i + 1) + ": ")
12         val num: Int = readLine()!!.toInt()
13         if (num == k) {
14             exists = true
15             break
16         }
17     }
18 
19     if (exists) {
20         println("Число $k было введено")
21     } else {
22         println("Число $k не было введено")
23     }
24 }

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

 1 fun main() {
 2     print("Введите число n > 1: ")
 3     val n: Int = readLine()!!.toInt()
 4 
 5     var isPrime = true
 6     for (i in 2..Math.round(Math.sqrt(n.toDouble()))) {
 7         if (n % i == 0L) {
 8             isPrime = false
 9             break
10         }
11     }
12 
13     if (isPrime) {
14         println("Число $n является простым")
15     } else {
16         println("Число $n является составным")
17     }
18 }

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

 1 fun main() {
 2     print("Введите число x > 1: ")
 3     var x: Int = readLine()!!.toInt()
 4 
 5     var i = 2
 6     print("$x = 1")
 7     do {
 8         if (x % i == 0) {
 9             print(" * $i")
10             x /= i
11         } else {
12             i++
13         }
14     } while (x != 1)
15 }