Задачи на нахождение натуральных и дружественных чисел с использованием циклов - C (СИ)
Формулировка задачи:
Помогите пожалуйста решить задачки, заранее благодарна ;3
1. Найти натуральное число, состоящее из трёх цифр, с возрастающими слева направо цифрами, являющееся полным квадратом. Число является полным квадратом, если квадратный корень из него есть простое число (число 121 – полный квадрат, т.к. 121=11*11, а 11 – простое число).
Тут я как-то представляю себе это, но как обозначить - хз.
2. Два натуральных числа называют дружественными, если каждое из них равно сумме всех делителей другого, кроме самого этого числа. Найдите все пары дружественных чисел на отрезке [a,b].
Решение задачи: «Задачи на нахождение натуральных и дружественных чисел с использованием циклов»
textual
Листинг программы
#include <stdio.h>
void is_palindrome(int);
int length(long unsigned);
int main()
{
int start, end;
int i;
printf("start: ");
scanf("%i", &start);
printf("end : ");
scanf("%i", &end);
if (start>end)
return 1;
for (;start<=end; ++start)
is_palindrome(start);
return 0;
}
void is_palindrome(int n)
{
int i, j;
int pal; // palindrome
long unsigned cnn, nn = (long unsigned)n * n;
i = length(nn);
char array[i+1];
j=i;
cnn = nn;
if (i<2)
return;
while (--j>=0) {
array[j] = cnn % 10 + '0';
cnn /= 10;
}
pal = 1;
for (j=0; j< i/2; ++j)
if (array[j]!= array[i-1-j])
pal = 0;
if (pal)
printf("%i * %i = %lu\n", n, n, nn);
}
int length(long unsigned nn)
{
return nn>9? length(nn/10)+1: 1;
}
Объяснение кода листинга программы
- Программа находит два числа от пользователя, одно больше другого.
- Если числа не соответствуют этому условию, программа завершается.
- Затем программа проверяет каждое число от большего до меньшего на то, является ли оно простым.
- Для каждого числа от большего до меньшего программа сначала вычисляет квадрат числа, а затем выделяет массив символов для этого числа.
- Затем программа сравнивает символы в обратном порядке с символами в прямом порядке.
- Если символы не совпадают, программа выводит сообщение о том, что число не является простым.
- Если символы совпадают, программа выводит сообщение о том, что число является простым.
- Если число равно 1, программа выводит сообщение о том, что число не является простым.
- Если число больше 9, программа вызывает функцию для вычисления длины числа.
- Если число меньше или равно 9, программа возвращает 1.
- Если число больше 9, программа рекурсивно вызывает функцию для вычисления длины числа, пока число не станет меньше или равным 9.
- Если число меньше или равно 9, программа возвращает 1.
- Если число больше 9, программа возвращает результат вычисления функции вычисления длины числа.
- Если число меньше или равно 9, программа возвращает 1.
- Программа завершается.