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

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску
 
(не показано 11 промежуточных версий этого же участника)
Строка 80: Строка 80:
 
=== Защита от неверного ввода ===
 
=== Защита от неверного ввода ===
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 +
package ru.example;
  
 +
import java.util.Scanner;
 +
 +
public class Main {
 +
 +
    public static void main(String[] args) {
 +
        int x;
 +
 +
        do {
 +
            System.out.print("Введите x > 0: ");
 +
            Scanner sc = new Scanner(System.in);
 +
            x = sc.nextInt();
 +
            if (x <= 0) {
 +
                System.out.println("Неверный ввод.");
 +
            }
 +
        } while (x <= 0);
 +
        System.out.println("x = " + x);
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Вывод 10 первых степеней двойки ===
 
=== Вывод 10 первых степеней двойки ===
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 +
package ru.example;
 +
 +
public class Main {
  
 +
    public static void main(String[] args) {
 +
        int x = 2;
 +
 +
        for (int i = 1; i <= 10; i++) {
 +
            System.out.println("2 ** " + i + " = " + x);
 +
            x *= 2;
 +
        }
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Вывод всех двухзначных чисел, кратных 5 ===
 
=== Вывод всех двухзначных чисел, кратных 5 ===
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 +
package ru.example;
  
 +
public class Main {
 +
 +
    public static void main(String[] args) {
 +
        int x = 10;
 +
 +
        while (x < 100) {
 +
            System.out.println(x);
 +
            x += 5;
 +
        }
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Вывод n первых чисел Фибоначчи ===
 
=== Вывод n первых чисел Фибоначчи ===
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 +
package ru.example;
 +
 +
import java.util.Scanner;
 +
 +
public class Main {
 +
 +
    public static void main(String[] args) {
 +
        int n, a, b;
 +
        Scanner sc = new Scanner(System.in);
 +
 +
        System.out.println("Введите число n (n > 1): ");
 +
        n = sc.nextInt();
  
 +
        a = 1; b = 1;
 +
        System.out.print(a + " " + b + " ");
 +
        for (int i = 1; i <= n - 2; ++i) {
 +
            int tmp = a;
 +
            a = b;
 +
            b += tmp;
 +
            System.out.print(b + " ");
 +
        }
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти НОД(A,B), используя алгоритм Евклида: ===
 
=== Найти НОД(A,B), используя алгоритм Евклида: ===
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 +
package ru.example;
 +
 +
import java.util.Scanner;
 +
 +
public class Main {
 +
 +
    public static void main(String[] args) {
 +
        int a, b;
 +
        Scanner sc = new Scanner(System.in);
 +
 +
        System.out.println("Введите целое число A:");
 +
        a = sc.nextInt();
 +
        System.out.println("Введите целое число B:");
 +
        b = sc.nextInt();
  
 +
        while (b != 0) {
 +
            int tmp = a;
 +
            a = b;
 +
            b = tmp % b;
 +
        }
 +
 +
        System.out.println("НОД(A, B) = " + a);
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти сумму цифр целого числа m ===
 
=== Найти сумму цифр целого числа m ===
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 +
package ru.example;
 +
 +
import java.util.Scanner;
 +
 +
public class Main {
 +
 +
    public static void main(String[] args) {
 +
        int m;
 +
        Scanner sc = new Scanner(System.in);
 +
 +
        System.out.println("Введите целое число m:");
 +
        m = sc.nextInt();
 +
 +
        int sum = 0;
 +
        int m1 = Math.abs(m);
 +
 +
        while (m1 > 0) {
 +
            sum += m1 % 10;
 +
            m1 /= 10;
 +
        }
  
 +
        System.out.println("Сумма цифр числа " + m + " равна " + sum);
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти max из введенных чисел ===
 
=== Найти max из введенных чисел ===
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 +
package ru.example;
 +
 +
import java.util.Scanner;
 +
 +
public class Main {
 +
 +
    public static void main(String[] args) {
 +
        System.out.print("Введите количество чисел: ");
 +
        Scanner sc = new Scanner(System.in);
 +
        int count = sc.nextInt();
 +
 +
        int i = 0;
 +
        System.out.print("Введите число " + (i+1) + ": ");
 +
        int num = sc.nextInt();
 +
        int max = num;
  
 +
        for (i = 1; i < count; i++) {
 +
            System.out.print("Введите число " + (i+1) + ": ");
 +
            num = sc.nextInt();
 +
            if (num > max) {
 +
                max = num;
 +
            }
 +
        }
 +
 +
        System.out.println("Максимальное число = " + max);
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти min, удовлетворяющее условию p(x) ===
 
=== Найти min, удовлетворяющее условию p(x) ===
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 +
package ru.example;
  
 +
import java.util.Scanner;
 +
 +
public class Main {
 +
    public static boolean p(int x) {
 +
        return x > 0;
 +
    }
 +
 +
    public static void main(String[] args) {
 +
        System.out.print("Введите количество чисел: ");
 +
        Scanner sc = new Scanner(System.in);
 +
        int count = sc.nextInt();
 +
 +
        boolean exists = false;
 +
        int min = Integer.MAX_VALUE;
 +
 +
        for (int i = 0; i < count; i++) {
 +
            System.out.print("Введите число " + (i+1) + ": ");
 +
            int num = sc.nextInt();
 +
            if ((num < min) && p(num)) {
 +
                min = num;
 +
                exists = true;
 +
            }
 +
        }
 +
 +
        if (exists) {
 +
            System.out.println("Минимальное из чисел удовлетворяющих условию = " + min);
 +
        } else {
 +
            System.out.println("Нет чисел, удовлетворяющих условию");
 +
        }
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Есть ли среди введенных число k? ===
 
=== Есть ли среди введенных число k? ===
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 +
package ru.example;
 +
 +
import java.util.Scanner;
 +
 +
public class Main {
 +
    public static void main(String[] args) {
 +
        Scanner sc = new Scanner(System.in);
 +
        boolean exists = false;
 +
 +
        System.out.print("Введите количество чисел: ");
 +
        int count = sc.nextInt();
 +
 +
        System.out.print("Введите искомое число: ");
 +
        int k = sc.nextInt();
 +
 +
        for (int i = 0; i < count; i++) {
 +
            System.out.print("Введите число " + (i+1) + ": ");
 +
            int num = sc.nextInt();
 +
            if (num == k) {
 +
                exists = true;
 +
                break;
 +
            }
 +
        }
  
 +
        if (exists) {
 +
            System.out.println("Число " + k + " было введено");
 +
        } else {
 +
            System.out.println("Число " + k + " не было введено");
 +
        }
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Является ли число N>1 простым? ===
 
=== Является ли число N>1 простым? ===
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 +
package ru.example;
  
 +
import java.util.Scanner;
 +
 +
public class Main {
 +
    public static void main(String[] args) {
 +
        Scanner sc = new Scanner(System.in);
 +
 +
        System.out.print("Введите число n > 1: ");
 +
        int n = sc.nextInt();
 +
 +
        boolean isPrime = true;
 +
        for (int i = 2; i <= Math.round(Math.sqrt(n)); i++) {
 +
            if (n % i == 0) {
 +
                isPrime = false;
 +
                break;
 +
            }
 +
        }
 +
 +
        if (isPrime) {
 +
            System.out.println("Число " + n + " является простым");
 +
        } else {
 +
            System.out.println("Число " + n + " является составным");
 +
        }
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Разложение числа на простые множители ===
 
=== Разложение числа на простые множители ===
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 +
package ru.example;
 +
 +
import java.util.Scanner;
 +
 +
public class Main {
 +
    public static void main(String[] args) {
 +
        Scanner sc = new Scanner(System.in);
 +
 +
        System.out.print("Введите число x > 1: ");
 +
        int x = sc.nextInt();
  
 +
        int i = 2;
 +
        System.out.print(x + " = 1");
 +
        do {
 +
            if (x % i == 0) {
 +
                System.out.print(" * " + i);
 +
                x = x / i;
 +
            } else {
 +
                i++;
 +
            }
 +
        } while (x != 1);
 +
    }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>

Текущая версия на 13:36, 7 июля 2021

Код программ

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args) {
 8         System.out.print("Введите число слагаемых: ");
 9         Scanner sc = new Scanner(System.in);
10         int count = sc.nextInt();
11 
12         int sum = 0;
13         for (int i = 0; i < count; i++) {
14             System.out.print("Введите число " + (i+1) + ": ");
15             int num = sc.nextInt();
16             sum += num;
17         }
18 
19         System.out.println("Сумма = " + sum);
20     }
21 }

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args) {
 8         System.out.print("Введите число множителей: ");
 9         Scanner sc = new Scanner(System.in);
10         int count = sc.nextInt();
11 
12         int product = 1;
13         for (int i = 0; i < count; i++) {
14             System.out.print("Введите множетель " + (i+1) + ": ");
15             int num = sc.nextInt();
16             product *= num;
17         }
18 
19         System.out.println("Произведение = " + product);
20     }
21 }

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args) {
 8         System.out.print("Введите количество чисел: ");
 9         Scanner sc = new Scanner(System.in);
10         int count = sc.nextInt();
11 
12         int oddCount = 0;
13         for (int i = 0; i < count; i++) {
14             System.out.print("Введите число " + (i+1) + ": ");
15             int num = sc.nextInt();
16             if (Math.abs(num % 2) == 1) {
17                 oddCount++;
18             }
19         }
20 
21         System.out.println("Количество нечётных чисел = " + oddCount);
22     }
23 }

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args) {
 8         int x;
 9 
10         do {
11             System.out.print("Введите x > 0: ");
12             Scanner sc = new Scanner(System.in);
13             x = sc.nextInt();
14             if (x <= 0) {
15                 System.out.println("Неверный ввод.");
16             }
17         } while (x <= 0);
18         System.out.println("x = " + x);
19     }
20 }

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

 1 package ru.example;
 2 
 3 public class Main {
 4 
 5     public static void main(String[] args) {
 6         int x = 2;
 7 
 8         for (int i = 1; i <= 10; i++) {
 9             System.out.println("2 ** " + i + " = " + x);
10             x *= 2;
11         }
12     }
13 }

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

 1 package ru.example;
 2 
 3 public class Main {
 4 
 5     public static void main(String[] args) {
 6         int x = 10;
 7 
 8         while (x < 100) {
 9             System.out.println(x);
10             x += 5;
11         }
12     }
13 }

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args) {
 8         int n, a, b;
 9         Scanner sc = new Scanner(System.in);
10 
11         System.out.println("Введите число n (n > 1): ");
12         n = sc.nextInt();
13 
14         a = 1; b = 1;
15         System.out.print(a + " " + b + " ");
16         for (int i = 1; i <= n - 2; ++i) {
17             int tmp = a;
18             a = b;
19             b += tmp;
20             System.out.print(b + " ");
21         }
22     }
23 }

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args) {
 8         int a, b;
 9         Scanner sc = new Scanner(System.in);
10 
11         System.out.println("Введите целое число A:");
12         a = sc.nextInt();
13         System.out.println("Введите целое число B:");
14         b = sc.nextInt();
15 
16         while (b != 0) {
17             int tmp = a;
18             a = b;
19             b = tmp % b;
20         }
21 
22         System.out.println("НОД(A, B) = " + a);
23     }
24 }

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args) {
 8         int m;
 9         Scanner sc = new Scanner(System.in);
10 
11         System.out.println("Введите целое число m:");
12         m = sc.nextInt();
13 
14         int sum = 0;
15         int m1 = Math.abs(m);
16 
17         while (m1 > 0) {
18             sum += m1 % 10;
19             m1 /= 10;
20         }
21 
22         System.out.println("Сумма цифр числа " + m + " равна " + sum);
23     }
24 }

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args) {
 8         System.out.print("Введите количество чисел: ");
 9         Scanner sc = new Scanner(System.in);
10         int count = sc.nextInt();
11 
12         int i = 0;
13         System.out.print("Введите число " + (i+1) + ": ");
14         int num = sc.nextInt();
15         int max = num;
16 
17         for (i = 1; i < count; i++) {
18             System.out.print("Введите число " + (i+1) + ": ");
19             num = sc.nextInt();
20             if (num > max) {
21                 max = num;
22             }
23         }
24 
25         System.out.println("Максимальное число = " + max);
26     }
27 }

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6     public static boolean p(int x) {
 7         return x > 0;
 8     }
 9 
10     public static void main(String[] args) {
11         System.out.print("Введите количество чисел: ");
12         Scanner sc = new Scanner(System.in);
13         int count = sc.nextInt();
14 
15         boolean exists = false;
16         int min = Integer.MAX_VALUE;
17 
18         for (int i = 0; i < count; i++) {
19             System.out.print("Введите число " + (i+1) + ": ");
20             int num = sc.nextInt();
21             if ((num < min) && p(num)) {
22                 min = num;
23                 exists = true;
24             }
25         }
26 
27         if (exists) {
28             System.out.println("Минимальное из чисел удовлетворяющих условию = " + min);
29         } else {
30             System.out.println("Нет чисел, удовлетворяющих условию");
31         }
32     }
33 }

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6     public static void main(String[] args) {
 7         Scanner sc = new Scanner(System.in);
 8         boolean exists = false;
 9 
10         System.out.print("Введите количество чисел: ");
11         int count = sc.nextInt();
12 
13         System.out.print("Введите искомое число: ");
14         int k = sc.nextInt();
15 
16         for (int i = 0; i < count; i++) {
17             System.out.print("Введите число " + (i+1) + ": ");
18             int num = sc.nextInt();
19             if (num == k) {
20                 exists = true;
21                 break;
22             }
23         }
24 
25         if (exists) {
26             System.out.println("Число " + k + " было введено");
27         } else {
28             System.out.println("Число " + k + " не было введено");
29         }
30     }
31 }

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6     public static void main(String[] args) {
 7         Scanner sc = new Scanner(System.in);
 8 
 9         System.out.print("Введите число n > 1: ");
10         int n = sc.nextInt();
11 
12         boolean isPrime = true;
13         for (int i = 2; i <= Math.round(Math.sqrt(n)); i++) {
14             if (n % i == 0) {
15                 isPrime = false;
16                 break;
17             }
18         }
19 
20         if (isPrime) {
21             System.out.println("Число " + n + " является простым");
22         } else {
23             System.out.println("Число " + n + " является составным");
24         }
25     }
26 }

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

 1 package ru.example;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6     public static void main(String[] args) {
 7         Scanner sc = new Scanner(System.in);
 8 
 9         System.out.print("Введите число x > 1: ");
10         int x = sc.nextInt();
11 
12         int i = 2;
13         System.out.print(x + " = 1");
14         do {
15             if (x % i == 0) {
16                 System.out.print(" * " + i);
17                 x = x / i;
18             } else {
19                 i++;
20             }
21         } while (x != 1);
22     }
23 }