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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.68
VladimirH
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 54
#1

Ввести целое число N. Вывести все простые делители этого числа - C++

23.10.2010, 17:27. Просмотров 4741. Ответов 15
Метки нет (Все метки)

прошу помочь над 2 задачами в с++:

1. Ввести целое число N. Вывести все простые делители этого числа

2. Ввести строку и слово, удалить все вхождения слова и вывести строку

буду оч благодарен за помощь...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2010, 17:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввести целое число N. Вывести все простые делители этого числа (C++):

Ввести целое число N. Вывести все простые делители этого числа - C++
помогите с двумя задачами... только начали программирование... 1. Ввести целое число N. Вывести все простые делители этого числа ...

Дано целое число n. Получить все простые делители этого числа - C++
Почему простые делители выдает не правильно? ch-число del-делитель dd-делитель делителя #include "stdafx.h" #include...

Ввести целое число N. Вывести все простые числа из диапазона [2,N] - C++
Нужна помощь в решении некоторых задач. 1. Ввести целое число N. Вывести все простые числа из диапазона 2. Ввести строку и два слова,...

Вывести все простые делители числа - C++
Люди помогите с лабами до субботы надо сдать!!! 1. Ввести целое число N. Вывести все простые делители этого числа. 2. Ввести строку...

Дано натуральное число N получить все делители этого числа. - C++
Дано натуральное число N получить все делители этого числа. C++ в QT. Можно и в MVS. Почищу код если в MVS.

С клавиатуры задается двухзначное целое число. Необходимо вывести на экран все его делители - C++
С клавиатуры задается двухзначное целое число. Необходимо вывести на экран все его делители

15
odip
Эксперт С++
7157 / 3219 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
23.10.2010, 17:45 #2
1. Ввести целое число N. Вывести все простые делители этого числа
Перебираем все простые числа от 2 и дальше
Делим N на очередное простое число, пока делится
Цикл закончим когда N станет равно 1

Добавлено через 1 минуту
Можно даже не перебирать все простые - а перебирать числа 2,3,4,5,...
Число 4 нам никогда не попадется потому что 4=2*2
А все 2-ки из числа N как делители будут извлечены ранее

Добавлено через 1 минуту
Для скорости можно перебирать 2 отдельно
А потом 3,5,7,9,11,...
0
VladimirH
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 54
23.10.2010, 17:50  [ТС] #3
мне нужно написать саму программу!!

Добавлено через 1 минуту
если не сложно напишите пожалуйста
0
odip
Эксперт С++
7157 / 3219 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
23.10.2010, 17:54 #4
Окончание тоже можно ускорить

Если N стало равно 1, тогда цикл заканчивается

Берем очередной делитель p
Если N делится на p, тогда все ясно
- делим N на p, пока делится
и выводим что p - это простой делитель

А вот если N не делится на p, тогда проверяем p*p>N
Если это верно, то значит дальше нет смысла искать другие делители больше чем p,
потому что число N - само является простым
0
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
23.10.2010, 18:22 #5
Вот мои наработки, работает в каких-то случаях правильно в каких-то нет, из-за того что нашел я формулу простых чисел Чена(http://ru.wikipedia.org/wiki/%D0%A1%...81%D0%B5%D0%BB), где сказано так же про полупростые числа(для понимания тыкни на ссылку), но с ними уж как-нибудь сам!
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 "stdafx.h"
#include "iostream"
 
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int n;
std::cin >> n;
for(int a=2;n!=1;a++)
{
        if (n%2==0)
    {
        n/=2;
        std::cout << "2 ";
    };
    if ((n%a==0)  | (n%(a+2)==0)) 
    {
        n/=a;
        std::cout << a << " ";
        a--;
    };
};
char q;
std::cin >> q;
    return 0;
}
0
VladimirH
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 54
23.10.2010, 20:41  [ТС] #6
млин что-то тут сложно как-то это только первая лабораторка...
0
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
23.10.2010, 20:55 #7
И это - сложно?? Ничё не сложно!

Добавлено через 10 минут
Можно взять мой вариант:
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 <iostream>
 
using namespace std;
 
int prv(int n)
{
    register int d;
 
    for (d=2; d<=n/2; d++)
        if (n%d==0)
            return 0;
    return 1;
}
 
int main(int argc, char *argv[])
{
    int N;
    cout<<"N: ";
    cin>>N;
    
    for (int del=2;N>1;del++)
        if (prv(del))
            if (N%del==0)
            {
                N/=del;
                cout<<del<<" ";
                del--;
            }
    return 0;
}
0
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
23.10.2010, 20:55 #8
А что разве лабораторку на дом дают?
0
VladimirH
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 54
24.10.2010, 02:19  [ТС] #9
ну да мы должны сессии хотя бы 5 принести и сдать)
0
VladimirH
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 54
04.11.2010, 18:11  [ТС] #10
может кто со 2 поможет?
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
03.12.2010, 23:47 #11
Цитата Сообщение от VladimirH Посмотреть сообщение
2. Ввести строку и слово, удалить все вхождения слова и вывести строку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <sstream>
#include <string>
 
int main()
{
    std::string str, wrd;
    std::cout << "Enter string: \n\t-> ";
    std::getline(std::cin, str);
    std::cout << "Enter word: \n\t-> ";
    std::cin >> wrd;
 
    std::istringstream ist(str);
    std::cout << "\n\t-> ";
    while(ist >> str)
        if(str != wrd)
            std::cout << str << ' ';
 
    return 0;
}
0
VladimirH
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 54
03.12.2010, 23:53  [ТС] #12
а можно через stdio.h
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
04.12.2010, 00:06 #13
VladimirH, Это уже будет Си, а в первом посте сказано:
Цитата Сообщение от VladimirH Посмотреть сообщение
прошу помочь над 2 задачами в с++:
Ну ладно на
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
 
int main()
{
    char str[256], wrd[50];
    printf("Enter string: \n\t-> ");
    gets(str);
    printf("Enter word: \n\t-> ");
    gets(wrd);
 
    printf("\nAfter delete: \n\t-> ");
    for(char *p = strtok(str, " "); p; p = strtok(NULL, " "))
        if(strcmp(p, wrd))
            printf("%s ", p);
    return 0;
}
1
VladimirH
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 54
04.12.2010, 00:13  [ТС] #14
Спасибо огромное!!!

З.Ы. можно ещё пояснить немного после мэйна, а то защитить её уже завтра надо будет

Добавлено через 36 секунд
там где цикл фор идёт
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
04.12.2010, 00:17 #15
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
 
int main()
{
    char str[256], wrd[50];
    printf("Enter string: \n\t-> ");
    gets(str);
    printf("Enter word: \n\t-> ");
    gets(wrd);
 
    printf("\nAfter delete: \n\t-> ");
    for(char *p = strtok(str, " "); p; p = strtok(NULL, " "))//Розбиваем строку на слова при помощи strtok()
        if(strcmp(p, wrd))//Если некое слово из строки не ровняется слову которие мы ввели...
            printf("%s ", p);//...значить выводим его на екран
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2010, 00:17
Привет! Вот еще темы с ответами:

Циклические алгоритмы: вывести на экран все простые делители заданного натурального числа - C++
Вывести на экран все простые делители заданного натурального числа

Дано трехзначное целое число N. Найти все цифры этого числа - C++
Дано трехзначное целое число N. Найти все цифры этого числа. (Помогите)

ввести целое двузначное число. вывести числа кратные 3 - C++
ввести целое двузначное число. вывести числа кратные 3

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


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
04.12.2010, 00:17
Ответ Создать тему
Опции темы

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