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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.81
Новенький
44 / 9 / 2
Регистрация: 03.03.2009
Сообщений: 254
#1

Простые делители - C++

23.04.2009, 22:27. Просмотров 3321. Ответов 25
Метки нет (Все метки)

Требуется написать программу которая находит сумму простых делителей числа n
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Новенький
44 / 9 / 2
Регистрация: 03.03.2009
Сообщений: 254
24.04.2009, 10:43  [ТС]     Простые делители #21
тоже самое, неоптимальное решение

Добавлено через 12 минут 50 секунд
Цитата Сообщение от Новенький Посмотреть сообщение
тоже самое, неоптимальное решение
Humanitis, там надо найти сумму различных простых делителей числа
вот я так написал, может сможешь оптимизировать:
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 <math.h>
#include <iostream>
using namespace std;
  bool prime(unsigned long long int n){
if (n==1) return 0;
if (n==2) return 1;
if (n%2==0) return 0;
for (int i=3; i*i<=n; i+=2)
    if (n%i==0) return 0;
    return 1;
    } 
main(){
       unsigned long long int n,i=2,res=0;
       cin>>n;
       while(n!=1){
                   if ((prime(i))&&(n%i==0)){
                                           while (n%i==0){
                                                 n/=i;
                                                 if (i!=res){
                                                             res+=i;
                                                             }
                                                 }
                                           }
                   i++;
                   }
       cout<<res;
       getchar();
       getchar();
       return 0;
       }
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
24.04.2009, 11:04     Простые делители #22
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
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <limits.h>
#if UINT_MAX>=1000000000
#define UINT unsigned int
#else
#if ULONG_MAX>=1000000000 
#define UINT unsigned long int
#else
#define UINT unsigned long long int
#endif
#endif
using namespace std;
UINT summ(UINT n)
{
   UINT result=0,i;
   if(!(n&1))
   {
      result+=2;
      do
      {
          n/=2;
       }while(!(n&1));
   }
   i=3;
   while(n!=1)
   {
       while(n%i)i+=2;
       do
       {
           n/=i;
       }while(n%i);
      result+=i;
      i+=2;
   }
return result;
}
main()
{
        UINT i,x;
        cin>>i;
        x=summ(i);
        cout<<x;
        return 0;
}
P.S. в след. раз постарайся хотя бы условие задачи полностью написать
Новенький
44 / 9 / 2
Регистрация: 03.03.2009
Сообщений: 254
24.04.2009, 11:07  [ТС]     Простые делители #23
Цитата Сообщение от Humanitis Посмотреть сообщение
C++
1
2
#include <iostream>
#include <limits.h>
P.S. в след. раз постарайся хотя бы условие задачи полностью написать
вооще ничего не выводит...
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
24.04.2009, 11:13     Простые делители #24
C++
1
2
3
4
       do
       {
           n/=i;
       }while(!(n%i));//тут надо поправить
Новенький
44 / 9 / 2
Регистрация: 03.03.2009
Сообщений: 254
24.04.2009, 11:25  [ТС]     Простые делители #25
Ну а теперь 64 теста прошло, и на последнем превышен интервал времени максимум 2 сек должно быть....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2009, 18:42     Простые делители
Еще ссылки по теме:

Получить все простые делители заданного числа C++
Получить все простые делители натурального числа C++
C++ Найти все простые делители заданного натурального числа
Получить все простые делители заданного натурального числа C++
Получить все простые делители числа C++

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

Или воспользуйтесь поиском по форуму:
Новенький
44 / 9 / 2
Регистрация: 03.03.2009
Сообщений: 254
25.04.2009, 18:42  [ТС]     Простые делители #26
Попытайтесь улучшить алгоритм Humanitis
Yandex
Объявления
25.04.2009, 18:42     Простые делители
Ответ Создать тему
Опции темы

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