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

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

Войти
Регистрация
Восстановить пароль
 
Piro
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 5
#1

Число простых делителей не превосходящих х на С++ рекурсивно - C++

13.05.2012, 13:47. Просмотров 632. Ответов 5
Метки нет (Все метки)

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

Среди простых чисел, не превосходящих N, найти такое, в десятичной записи которого максимальное число единиц - C++
Пожалуйста, помогите кто может очень срочно нужно((((

Определить натуральное число не больше заданного n с наибольшим числом простых делителей - C++
Вот наткнулся на интересную задачку,ну,по карйней мере меня заинтересовала:good:,ну так вот : 1. Определить натурально число не больше...

Рекурсивно вычислить сумму квадратов тех чисел, не превосходящих двух - C++
Пусть {a}_{0}={cos(1)}^{2}; {a}_{1}={-sin(1)}^{2}; {a}_{k}=2*{a}_{k-1}-{a}_{k-2}; k=2,3... Найти сумму квадратов тех чисел {a}_{1}, ... ,...

Сформировать массив простых чисел, не превосходящих заданное - C++
Такая вот задачка: Составить прог-му которая формирует массив элементы которого являются простыми числами не превосходящими заданное...

Распечатать четверки простых чисел, принадлежащих одному десятку и не превосходящих данного числа - C++
Дано натуральное число N > 19. Распечатать четверки простых чисел, не превосходящих N, принадлежащих одному десятку. Например, для числа...

Найти количество простых чисел, не превосходящих N, в десятичной записи которых нет четных цифр - C++
Задано натуральное число N. Найти и вывести одно число - количество простых чисел, не превосходящих N, в десятичной записи которых нет...

5
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 14:10 #2
Если 1 не считать как простой делитель, то

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <cmath>
using namespace std;
int k=70;
int func(int number){
    if (number>(int)sqrt((double)k)) return 0;
    bool f=1;
    for (unsigned int i=2;i<(int)sqrt((double)number);i++)
        if (number%i==0) {f=0;break;}
    if (f) return func(number+1)+1;
        else return func(number+1); 
};
int main(){
    cout<<func(2);
    getch();
    return 0;
}
k=x; забыл переназвать
1
Piro
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 5
13.05.2012, 14:56  [ТС] #3
Понятно.Но если х это введённое число? То есть нужно найти делители не превосходящие х.
0
Nikolay_it
6 / 6 / 0
Регистрация: 08.05.2012
Сообщений: 15
13.05.2012, 14:58 #4
C++
1
2
3
4
5
6
7
int main(){
    int x;
    cin >> x;
    cout<<func(x);
    getch();
    return 0;
}
1
Piro
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 5
14.05.2012, 08:55  [ТС] #5
Понятно.Большое спасибо.

Добавлено через 17 часов 53 минуты
Выявились бока.Если вводим простое число,то подсчёт неверен.
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
14.05.2012, 09:59 #6
Цитата Сообщение от Piro Посмотреть сообщение
Понятно.Большое спасибо.

Добавлено через 17 часов 53 минуты
Выявились бока.Если вводим простое число,то подсчёт неверен.
Давайте тесты.
Возможно ошибки из-за округления в int просто на delphi я обычно писал trunc(sqrt(n))

Добавлено через 10 минут
Виноват, да! был баг

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <cmath>
using namespace std;
int k=7;
int func(int number){
    if (number>sqrt((double)k)) return 0;
    bool f=1;
    if (k%number!=0) f=0;
    if (f)
        for (unsigned int i=2;i<sqrt((double)number);i++)
            if (number%i==0) {f=0;break;}
    if (f) return func(number+1)+1;
        else return func(number+1); 
};
int main(){
    cout<<func(2);
    getch();
    return 0;
}
Я забыл вставить проверку того, что K%number==0

Кажется ещё 1 баг нашёл, сек

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <cmath>
using namespace std;
int k=24;
int func(int number){
    if (number>sqrt((double)k)) return 0;
    bool f=1;
    if (k%number!=0) f=0;
    if (f)
        for (unsigned int i=2;i<=sqrt((double)number);i++)
            if (number%i==0) {f=0;break;}
    if (f) return func(number+1)+1;
        else return func(number+1); 
};
int main(){
    cout<<func(2);
    getch();
    return 0;
}
Теперь всё верно, вроде там <= надо, а было <

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <cmath>
using namespace std;
int func(int number,int &x){
    if (number>sqrt((double)x)) return 0;
    bool f=1;
    if (x%number!=0) f=0;
    if (f)
        for (unsigned int i=2;i<=sqrt((double)number);i++)
            if (number%i==0) {f=0;break;}
    if (f) return func(number+1,x)+1;
        else return func(number+1,x); 
};
int main(){
    int x=0;
    cin>>x;
    cout<<func(2,x);
    getch();
    return 0;
}

+ считывание с консоли числа x
Последнее -- то как вы хотели
1
14.05.2012, 09:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2012, 09:59
Привет! Вот еще темы с ответами:

Вывести на консоль количество простых чисел, не превосходящих N, в десятичной записи которых нет четных цифр - C++
Дано число N. Вывести одно число - количество простых чисел, не превосходящих N, в десятичной записи которых нет четных цифр.

Среди простых чисел , не превосходящих заданного натурального числа N .Найти такие, в десятичном представление которых больше всего нулей - C++
Ребята помогите!!!!!!!!!!!!!! плс

Функция определения суммы простых делителей числа - C++
Вводится последовательность целых чисел, 0 - конец последовательности. Для каждого числа последовательности найти сумму его простых...

Описать функцию f(x) – количество разных простых делителей числа х - C++
Описать функцию f(x) –количество разных простих делителей числа х. Составить програму поиска всех чисел, что имеют k разных простих...


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

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

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