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

Дано целое число n. Получить все простые делители этого числа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
AlenaShch
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 29
29.10.2012, 17:23     Дано целое число n. Получить все простые делители этого числа #1
Почему простые делители выдает не правильно?
ch-число
del-делитель
dd-делитель делителя

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <locale>
using namespace std;
 
void main()
{setlocale (LC_ALL, "Russian");
int ch,dd,del,k;
cout<<"Введите целое число \n";
cin>>ch;
    for(del=1;del<=ch/2;del++)
        {if ((ch%del)==0)
        cout<<"Делители числа: "<<del<<endl;
        }
k=del-1;
    for(dd=2;dd<=k;dd++)
        {if (del%dd != 0)
        cout<<"Простое число равно "<<dd<<endl;
        }
    cout<<endl<<endl;
}
Добавлено через 8 минут
Если считать количество делителей делителя, то программа все равно работает не правильно
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
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <locale>
using namespace std;
 
void main()
{setlocale (LC_ALL, "Russian");
int ch,dd,del,k,kol;
cout<<"Введите целое число \n";
cin>>ch;
    for(del=1;del<=ch;del++)
        {if ((ch%del)==0)
        cout<<"Делители числа: "<<del<<endl;
        }
k=del-1;
    for(dd=2;dd<=k;dd++)
        {if (del%dd != 0)
        kol=kol+1;
            {if (kol=0)
            cout<<"Простое число равно "<<del<<endl;
            }
        }
    cout<<endl<<endl;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2012, 17:23     Дано целое число n. Получить все простые делители этого числа
Посмотрите здесь:

C++ Дано натуральное число n. Найти все его делители и разложить его на простые числа.
Ввести целое число N. Вывести все простые делители этого числа C++
Ввести целое число N. Вывести все простые делители этого числа C++
Дано натуральное число n>1. Выведите все простые множители этого числа в порядке возрастания с учетом кратности. C++
Дано натуральное число N получить все делители этого числа. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.10.2012, 18:37     Дано целое число n. Получить все простые делители этого числа #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
27
28
29
30
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <locale>
using namespace std;
 
void main()
{setlocale (LC_ALL, "Russian");
int ch,k;
cout<<"Введите целое число \n";
cin>>ch;
if(ch%2==0)
{
    cout<<"Делители числа: "<<2<<endl;
    while(ch%2==0)
        ch/=2;
}
for(k=3;k*k<=ch/2; k+=2)
    if (ch%k==0)
    {
        cout<<"Делители числа: "<<k<<endl;
        while(ch%k==0)
            ch/=k;
 
    }
if(ch>1)
    cout<<"Делители числа: "<<ch<<endl;
 
    cout<<endl<<endl;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.10.2012, 18:41     Дано целое число n. Получить все простые делители этого числа #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
int main( )
{
    unsigned long i, n;
    std::cin >> n;
    i = 2;
    while (n != 1)
    {
        if (i*i > n)
           i = n;
        while (n % i != 0)
           i++;
        while(n % i == 0)
           n /= i;
        std::cout << i << "\n";
    }
    return 0;
}
Добавлено через 1 минуту

Не по теме:

опоздал))

valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.10.2012, 18:52     Дано целое число n. Получить все простые делители этого числа #4
Цитата Сообщение от Thinker Посмотреть сообщение
опоздал))
бывает ))
Yandex
Объявления
29.10.2012, 18:52     Дано целое число n. Получить все простые делители этого числа
Ответ Создать тему
Опции темы

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