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

С++ Теория алгоритмов. Найти количество делителей - C++

Восстановить пароль Регистрация
 
Al-chan
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 9
24.02.2013, 15:06     С++ Теория алгоритмов. Найти количество делителей #1
Пусть х — некоторое натуральное число (1 <= x <= 1018), обладающее
следующим свойством - все простые делители этого числа не превосходят
1000. Найти количество его делителей.
Пример:
Входные данные/Выходные данные
12/6
239/2
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2013, 15:06     С++ Теория алгоритмов. Найти количество делителей
Посмотрите здесь:

Найти количество делителей натурального числа. Сколько из них четных C++
Найти количество делителей натурального числа, больших K C++
Найти количество нечетных делителей натурального числа, больших К C++
C++ Найти на отрезке [m, n] натуральное число, имеющее наибольшее количество делителей
C++ Найти количество делителей каждого из целых чисел от 120 до 140
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
olya7
476 / 293 / 91
Регистрация: 18.02.2013
Сообщений: 684
24.02.2013, 15:19     С++ Теория алгоритмов. Найти количество делителей #2
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
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
 
int f(int n)
{
    int s=0,i;
   for(i=1;i<=n;i++)
    {
        if (n%i==0) s++;
        
    }
    return s;
 
};
 
void main() 
{
    int n;
    do
{
    cout<<"Vvedite n"<<endl;
    cin>>n;
} while (n <= 0|| n>=1018);
 cout << f(n);
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
24.02.2013, 17:49     С++ Теория алгоритмов. Найти количество делителей #3
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main ()
{
    long long x, i, res=1, t;
    cin>>x;
    if(x==1)
    {
        cout<<1<<endl;
        return 0;
    }
    for(i=2; i<1001; i++)
    {
        if(x%i==0)
        {
            t=0;
            while(x%i==0)
            {
                t++;
                x/=i;
            }
            res+=res*t;
        }
    }
    cout<<res<<endl;
    return 0;
}
olya7
476 / 293 / 91
Регистрация: 18.02.2013
Сообщений: 684
25.02.2013, 00:05     С++ Теория алгоритмов. Найти количество делителей #4
------------
Al-chan
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 9
26.02.2013, 00:06  [ТС]     С++ Теория алгоритмов. Найти количество делителей #5
Olya7, я прошу прощения, у меня не работал Visual studio, да и времени посмотреть код не было. Ваша программа построена не правильно. Мой вариант:
#include<iostream>

using namespace std;

int f(int n)
{
int s = 0, i;
for(i = 1; i <= n; i++)
{
if(n%i==0) s++;
}
return s;
}

void main()
{
int n;
cout << "Vvedite n: ";
cin>>n;

if(n > 1 || n < 1018)
cout << "S = " << f(n) << endl;

}
olya7
476 / 293 / 91
Регистрация: 18.02.2013
Сообщений: 684
26.02.2013, 00:14     С++ Теория алгоритмов. Найти количество делителей #6
Цитата Сообщение от Al-chan Посмотреть сообщение
Olya7, я прошу прощения, у меня не работал Visual studio, да и времени посмотреть код не было. Ваша программа построена не правильно
а в чем различие? я не даю пользователю ввести число вне заданного диапозона и не заставляю программу лишний раз исполняться...
Yandex
Объявления
26.02.2013, 00:14     С++ Теория алгоритмов. Найти количество делителей
Ответ Создать тему
Опции темы

Текущее время: 02:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru