Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
krexx
-8 / 0 / 0
Регистрация: 23.01.2011
Сообщений: 52
#1

Определить количество четных и нечетных делителей числа - C++

20.12.2011, 13:48. Просмотров 1018. Ответов 6
Метки нет (Все метки)

Условие:
Задано число P определить количество его четных и нечетных делителей.
Задачу надо решить с помощью циклов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2011, 13:48
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить количество четных и нечетных делителей числа (C++):

Определить количество четных делителей числа - C++
Дано натуральное число. Определить количество его делителей. Сколько из них четных? С++(помогите с программой)

Числа. Подсчитать количество четных и нечетных чисел- разрядов. Найти суммы только всех четных и только нечетных, проверить какая из сумм больше - C++
Добрый день, не могу понять как же составить программу для этой задачи без использования массивов. Запросить у пользователя...

Найти количество нечетных делителей натурального числа, больших К - C++
Прошу помочь с 3-мя задачками очень нужно сдать а сделать никак не могу. 2) Найти количество нечетных делителей натурального числа,...

количество четных элементов одномерного массива до числа равному а, Определить количество нечетных элементов двумерного массива - C++
1.Найти количество четных элементов одномерного массива до первого встреченного числа равного наперед заданному числу а. 2.Дан двумерный...

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

Помогите разобраться: Найти количество четных делителей натурального числа. - C++
Здравствуйте, уважаемые пользователи. Нехватка времени вынуждает меня прибегнуть к помощи умных людей. Не могли бы вы помочь мне...

6
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
20.12.2011, 14:18 #2
Делаете два счетчика
Проходите в цикле от i = 1 до числа
- если остаток от деления на i == 0
То проверяете на четность, и увеличиваете соответствующий счетчик.
1
krexx
-8 / 0 / 0
Регистрация: 23.01.2011
Сообщений: 52
20.12.2011, 14:21  [ТС] #3
Напишите программу полностью плз.
0
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
20.12.2011, 14:28 #4
Цитата Сообщение от krexx Посмотреть сообщение
Задано число P определить количество его четных и нечетных делителей.
Если хотите, чтобы за Вас сделали, укажите полностью условие. Каких делителей, натуральных, или нет.
Ведь число 4 имеет 3 натуральных и 6 если объединить с отрицательными, т.е. из области Z
0
alkagolik
Заблокирован
20.12.2011, 14:53 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
28
29
30
31
#include <stdio.h>
#include <stdlib.h>
#include <assert.h> // для функций isvalid, isnovalid
#include <stdint.h>
 
int isvalid( int p){
    int i = 2, cnt = 0;
    if ( p % i )
        return ( !( p % i ) || !p );
    else
        while ( i <= (p / 2) )
            cnt += !( p % ( i += 2 ) );
    return ++cnt;
}
 
int isnovalid( int p ){
    int i = 3, cnt = 1;
    while ( i <= ( p / 3) )
        cnt += !( p % ( i += 2 ) );
    return ++cnt;
}
 
int main()
{
    int P = 12;
    puts("четных делителей");
    printf("%i\n", isvalid(P));
    puts("нечетных делителей");
    printf("%i\n", isnovalid(P));
    return 0;
}
1
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
20.12.2011, 14:56 #6
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
i <= n
Ну уже бы
C
1
i <= n / 2
Столько лишних итераций делать, в конце просто добавили бы
C
1
(n & 1) ? ocnt++ : ecnt++;
Например, Если число 10000, то это 5000 лишних итераций, а если число равно миллионам и т.д.
1
alkagolik
Заблокирован
20.12.2011, 15:14 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
кстати там ошибко, надо так переделать
C
1
2
3
4
5
6
7
8
9
10
11
12
13
int isvalid( int p){
    int i = 2, cnt = ( p % 2 ) ? 0 : 1;
    while ( i <= (p / 2) )
        cnt += !( p % ( i += 2 ) );
    return ( p % 2 ) ? cnt : ++cnt;
}
 
int isnovalid( int p ){
    int i = 3, cnt = 1;
    while ( i <= ( p / 3) )
        cnt += !( p % ( i += 2 ) );
    return ( p % 2 ) ? ++cnt : cnt;
}
короче доделал как надо
1
20.12.2011, 15:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2011, 15:14
Привет! Вот еще темы с ответами:

Определить К - количество делителей натурального числа N - C++
дано натуральное число N. Определить К-количество делителей этого числа не превышающих его (N-12, его делители 1 2 3 4 6 K=5) N-целое...

Определить количество делителей заданного числа - C++
Создайте программу которая будет вычислять сколько у числа делителей .И что бы она поддерживала числа до 999966000289.

Определить количество чётных и нечётных делителей вводимого числа - C++
С клавиатуры вводится целое число. Определить количество его чётных и нечётных делителей.

Требуется для каждого числа от a до b включительно определить количество натуральных делителей - C++
Требуется для каждого числа от a до b включительно определить количество натуральных делителей. Требуется на одной строке вывести b−a+1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru