Решить задачи по информатике
1. Дано целое n>2. Получить все простые числа из отрезка[2,n]
2. Решить квадратное уравнение с коэффициентами а,b,с.
3. Опишите рекурсивную функцию от вещественного х и целого n, которая вычисляет x^n
согласно формуле:
x^n=1 при n=0
X^n=1/x^n-1 при n<0
X^n=x*x^n-1 при n>0
DeepSeek-R1:
**Решение задач по информатике**
---
**1. Получить все простые числа из отрезка [2, n]**
```python
def primes_up_to_n(n):
sieve = [True] * (n + 1)
sieve[0] = sieve[1] = False
for current in range(2, int(n ** 0.5) + 1):
if sieve[current]:
for multiple in range(current * current, n + 1, current):
sieve[multiple] = False
return [num for num, is_prime in enumerate(sieve) if is_prime]
n = int(input("Введите n (>2): "))
print(primes_up_to_n(n))
```
**2. Решение квадратного уравнения ax² + bx + c = 0**
```python
import math
def solve_quadratic(a, b, c):
if a == 0:
return "Уравнение не квадратное"
D = b**2 - 4*a*c
if D > 0:
sqrt_D = math.sqrt(D)
x1 = (-b + sqrt_D) / (2*a)
x2 = (-b - sqrt_D) / (2*a)
return f"Два корня: x1 = {x1}, x2 = {x2}"
elif D == 0:
x = -b / (2*a)
return f"Один корень: x = {x}"
else:
real = -b / (2*a)
imag = math.sqrt(-D) / (2*a)
return f"Комплексные корни: x1 = {complex(real, imag)}, x2 = {complex(real, -imag)}"
a = float(input("Введите a: "))
b = float(input("Введите b: "))
c = float(input("Введите c: "))
print(solve_quadratic(a, b, c))
```
**3. Рекурсивная функция вычисления x^n**
```python
def power(x, n):
if n == 0:
return 1
elif n > 0:
return x * power(x, n - 1)
else:
return 1 / power(x, -n)
x = float(input("Введите x: "))
n = int(input("Введите n: "))
print(f"{x}^{n} = {power(x, n)}")
```
---
**Пояснения:**
1. **Простые числа:** Используется алгоритм "Решето Эратосфена" для эффективного поиска всех простых чисел до `n`. Время работы — O(n log log n).
2. **Квадратное уравнение:** Учитываются все случаи дискриминанта (D > 0, D = 0, D < 0), включая комплексные корни. Для точности вычислений используется модуль `math`.
3. **Рекурсивная степень:** Функция обрабатывает положительные, отрицательные показатели и нулевую степень. Рекурсия завершается за `|n|` шагов.
1. Дано целое n > 2. Получить все простые числа из отрезка [2, n]. Решение:
var i, k, j, n: integer;
begin
write('Введите n=');
read(n);
for i := 2 to n do
begin
j := 0;
for k := 2 to n do
if i mod k = 0 then j := j + 1;
if j = 1 then write(i:3)
end;
end.
2. Решить квадратное уравнение с коэффициентами a, b, c. Алгоритм решения квадратного уравнения ax2 + bx + c = 0:
Вычислить значение дискриминанта по формуле D = b2 − 4ac.
Если дискриминант отрицательный, зафиксировать, что действительных корней нет.
Если дискриминант равен нулю, вычислить единственный корень уравнения по формуле х = −b/2a.
Если дискриминант положительный, найти два действительных корня квадратного уравнения по формуле корней.
3. Описать рекурсивную функцию от вещественного х и целого n, которая вычисляет x^n. Пример решения на C++:
#include <iostream>
#include <conio.h>
#include <string.h>
#include <math.h>
using namespace std;
double rec(double, int);
int main() {
double x;
int n;
cout << "Enter float number : ";
cin >> x;
cout << "Enter pow : ";
cin >> n;
double c = rec(x, n);
cout << c << endl;
}
double rec(double num, int pow1) {
if (pow1 < 0) return 1 / pow(num, abs(pow1));
if (pow1 == 0) return pow(num, 0);
if (pow1 > 0) return num*pow(num, pow1 - 1);
}