Загрузка данных


#include <stdio.h>

// Функция для нахождения наибольшего простого делителя
int find_largest_prime_divisor(int num) {
    // Берем модуль числа (отрицательные числа обрабатываем как положительные)
    if (num < 0) {
        num = -num;
    }
    
    if (num <= 1) {
        return -1;  // Ошибка
    }
    
    int largest_prime = 1;
    int divisor = 2;
    
    // Проверяем делители от 2 до num
    while (divisor <= num) {
        // Проверяем, является ли divisor делителем (через вычитание)
        int temp = num;
        while (temp >= divisor) {
            temp -= divisor;
        }
        
        if (temp == 0) {  // divisor делит num
            // Проверяем, является ли divisor простым
            int is_prime = 1;
            int check = 2;
            while (check * check <= divisor) {
                // Проверяем делимость check через вычитание
                int t = divisor;
                while (t >= check) {
                    t -= check;
                }
                if (t == 0) {
                    is_prime = 0;
                    break;
                }
                check++;
            }
            
            if (is_prime) {
                largest_prime = divisor;
            }
            
            // Делим num на divisor (через вычитание)
            int new_num = num;
            int count = 0;
            while (new_num >= divisor) {
                new_num -= divisor;
                count++;
            }
            num = count;
            divisor = 2;
            continue;
        }
        divisor++;
    }
    
    return largest_prime;
}

int main() {
    int a;
    
    if (scanf("%d", &a) != 1) {
        printf("n/a\n");
        return 1;
    }
    
    int result = find_largest_prime_divisor(a);
    
    if (result == -1) {
        printf("n/a\n");
    } else {
        printf("%d\n", result);
    }
    
    return 0;
}
cd ~/D03T03

# Компилируем
gcc -Wall -Werror -Wextra src/1948.c -o 1948

# Тестируем
echo "100" | ./1948
# Должно вывести: 5

echo "-4" | ./1948
# Должно вывести: 2

echo "13" | ./1948
# Должно вывести: 13

# Проверяем статус
git status

# Добавляем файл
git add src/1948.c

# Делаем коммит
git commit -m "Quest 1: Tom Kilburn - largest prime divisor without division

- Implement find_largest_prime_divisor function
- Use only addition, subtraction, multiplication
- Handle negative numbers by taking absolute value
- Output n/a for invalid input"

# Отправляем на GitLab
git push origin develop