Компания ALT Linux
Опубликован: 07.03.2015 | Доступ: свободный | Студентов: 2136 / 487 | Длительность: 24:14:00
Лекция 3:

Операторы управления

Задача 3.14. Дано натуральное число N. Определить K — количество делителей этого числа, меньших самого числа (Например, для N=12 делители 1, 2, 3, 4, 6. Количество K=5).

Входные данные: N — целое число.

Выходные данные: целое число K — количество делителей N.

Промежуточные переменные: i — параметр цикла, возможные делители числа N.

В блок-схеме, изображённой на рис. 3.28, реализован следующий алгоритм: в переменную K, предназначенную для подсчёта количества делителей заданного числа, помещается значение, которое не влияло бы на результат, т.е. нуль. Далее организовывается цикл, в котором изменяющийся параметр i выполняет роль возможных делителей числа N. Если заданное число N делится нацело на параметр цикла i, это означает, что i является делителем N, и значение переменной K следует увеличить на единицу. Цикл необходимо повторить \frac{N}{2} раз.

Алгоритм определения делителей натурального числа.

Рис. 3.28. Алгоритм определения делителей натурального числа.

Текст программы на С++:

#include <iostream>
using namespace std;
int main ( )
{
	unsigned int N, i,K;
	cout<<" N = "; cin >>N;
	for (K=0, i =1; i<=N/ 2; i ++) if (N%i ==0) K++;
	cout<<" K = "<<K<<" \n ";
	return 0;
}
		

Задача 3.15. Дано натуральное число N. Определить, является ли оно простым. Натуральное число N называется простым, если оно делится без остатка только на единицу и на само себя. Число 13 — простое, так как делится только на 1 и 13, а число 12 таковым не является, так как делится на 1, 2, 3, 4, 6 и 12.

Входные данные: N — целое число.

Выходные данные: сообщение.

Промежуточные переменные: i — параметр цикла, возможные делители числа N.

Необходимо проверить, есть ли делители числа N в диапазоне от 2 до N/2 (рис. 3.29). Если делителей нет, N — простое число, иначе оно таковым не является. Обратите внимание на то, что в алгоритме предусмотрено два выхода из цикла. Первый — естественный, при исчерпании всех значений параметра, а второй — досрочный. Нет смысла продолжать цикл, если будет найден хотя бы один делитель из указанной области изменения параметра.

Алгоритм определения простого числа.

Рис. 3.29. Алгоритм определения простого числа.

При составлении программы на языке С++ досрочный выход из цикла удобно выполнять при помощи оператора break:

#include <iostream>
using namespace std;
int main ( )
{
	unsigned int N, i;
	bool Pr;
	cout<<" N = "; cin >>N;
	Pr=true; //Предположим, что число простое
	for ( i =2; i <=N/ 2; i ++)
	if (N%i ==0) //Если найдётся хотя бы один делитель, то
	{
		Pr=false; //число простым не является и
		break; //досрочный выход из цикла
	}
	if ( Pr ) //Проверка значения логического параметра и вывод на печать
		//соответствующего сообщения
		cout<<N<<" - простое число\n ";
	else
		cout<<N<<" - не является простым\n ";
	return 0;
}
		
Сергей Радыгин
Сергей Радыгин

Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке?

Тип приложения - не Qt,

Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.

 

Юрий Герко
Юрий Герко

Кому удалось собрать пример из раздела 13.2 Компоновка (Layouts)? Если создавать проект по изложенному алгоритму, автоматически не создается  файл mainwindow.cpp. Если создавать этот файл вручную и добавлять в проект, сборка не получается - компилятор сообщает об отсутствии класса MainWindow. Как правильно выполнить пример?