Форум программистов, компьютерный форум CyberForum.ru

Найти количество делителей натурального числа. Сколько из них четных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ 1 Функция f с натуральными аргументами и значениями определена так: f(0) = 0, f(1) = 1, …, f (2n) = f(n), f (2n+1) = f (n) + f (n+1). Составить програ http://www.cyberforum.ru/cpp-beginners/thread456574.html
Функция f с натуральными аргументами и значениями определена так: f(0) = 0, f(1) = 1, …, f (2n) = f(n), f (2n+1) = f (n) + f (n+1). Составить программу вычисления f (n) по заданному n. через С++ если можно к строкам коментарии
C++ Даны два одномерных массива А и B. Найти их скалярное произведение. Даны два одномерных массива А и B. Найти их скалярное произведение.через С++ если можно к строчкам коментарии написать. http://www.cyberforum.ru/cpp-beginners/thread456572.html
C++ Ошибка при выводе строковой переменной
Привет всем, сразу скажу, что в с++ я не очень. Но нужно начинать уже сейчас в нем разбираться, а то скоро начнется он у меня в универе. Проблема именно вот в чем, нужно использовать MS Visual C++ 2010 Express версию, и не какую другую, а в ней какой-то баг, или я не знаю как это назвать, при выводе строковых переменных, указывает на ошибку вывода, что не могу я обработать такую операцию, вот...
C++ Ввод с ограничением времени. Таймер. Ввод.
Необходимо реализовать бесконечное нажатие мыши, чтобы выйти из цикла нажимаем например клавишу escape. Как реализовать этакий ввод с таймером? Имеются следующие соображения.char ch; int code; while() { mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); \\установить таймер на 10мсек ch = getch(); \\параллельно если таймер истек continue ...
C++ Исправить ошибки в программе http://www.cyberforum.ru/cpp-beginners/thread456532.html
Вот задача такая нужно прочитать из файла число прибавить к нему один и записать полученную суму обратно в этот же файл.Вот как я это пытался зделать: 1 - ый вариант:#include <fstream> int main() { fstream file; file.open( "File.txt" , ios::in|ios::out ); long num; file >> num; file << ++num; file.close();
C++ Строки. В заданном тексте найти самое длинное слово и самое длинное предложение. Задача: В заданном тексте найти самое длинное слово и самое длинное предложение. Помогите решить На СИ++ в Visual Studio. подробнее

Показать сообщение отдельно
SkyDream
32 / 26 / 2
Регистрация: 01.03.2012
Сообщений: 98
02.03.2012, 17:42     Найти количество делителей натурального числа. Сколько из них четных
Самый простой способ (без оптимизации):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <tchar.h>
#include <stdio.h>
#include <iostream>
using namespace std;
 
int main()
{
  int k, i, N; // k - кол-во делителей заданного числа; i - счетчик цикла; N - само заданное число.
  int even; // кол-во четных делителей
  cin >> N; // вводить надо натуральное число (от 1).
  
  k = 0;
  even = 0;
  for(i=1; i<=N; i++)
  {
    if(N%i == 0) // если остаток от деления = 0, это значит, что число i - делитель
    {
      k++;  
      if(i%2 == 0)
        even++;
    }
  }
 
  cout << "Делителей натурального числа " << N << " - " << k << "; Из них четных - " << even << endl;
  system("pause");
  return 0;
}
ЗЫ алгоритм можно сильно оптимизировать, т.к. для любое натуральное число > 1 имеет 2 делителя (1 и само число).
Соответственно единица нечетная, а само число надо проверить N%2 должно быть = 0.
Т.е. цикл можно делать от 2 до N-1.
ЗЫЫ можно еще оптимизировать алгоритм: после нахождения делителя можно делить N на получившееся число, это будет еще один делитель.
(пример: число 57, один из делителей - 3, теперь делим 57 на 3 и получаем еще один делитель, равный 19).
Ну в принципе, способов оптимизации может быть еще много, это для примера.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru