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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 829
Записей в блоге: 1
#1

Простые делители числа,задачка! - C++

20.09.2013, 22:28. Просмотров 1270. Ответов 22
Метки нет (Все метки)

Задача:Простые делители числа 13195 - это 5, 7, 13 и 29.

Какой самый большой делитель числа 600851475143, являющийся простым числом?

Замечание: число 600851475143 не поместится в тип int, чего не скажешь о типе long long. Этот тип официально включён в стандарт языка C++ лишь с 2011 года, но уже довольно давно доступен в популярных компиляторах языка, в том числе, Visual C++.

Смотреть скрин и помомь

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>
#include <locale>
 
using namespace std;
 
bool isSimple(long long A) {
    int flag=1;
    for (long long i=2;i<A;i++) {
        if (A%i==0) {
            flag=0;
            return false;
    }
}
    if  (flag=1) return true;
}
 
int main() {
    std::locale::global(std::locale(""));
    long long A=600851475143,result;
 
    for (long long i=2;i<A;i++) {
    if ((A%i==0)&&(isSimple(A))) 
        result=i;
    }
    
    cout<<"Самый большой делитель числа 600851475143,являющийся простым =  "<<result<<endl;
 
system("pause");
return 0;
}
Миниатюры
Простые делители числа,задачка!  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2013, 22:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простые делители числа,задачка! (C++):

Даны целые числа р и q. Получить все делители числа q, взаимно простые с р - C++
Получить все делители числа q, взаимно простые с р.

Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p. - C++
Даны натуральные числа p и q. Получить все делители числа q , взаимно простые к p.

Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. - C++
Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. Решите на С++. Заранее спасибо!

Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p - C++
Даны натуральные числа p и q. Получить все делители числа q , взаимно простые к p. помогите сделать на с++

Простые делители заданного числа - C++
Задача из сборника Златопольского 8.54*. Дано натуральное число n. Получить все простые делители этого числа #include &lt;iostream&gt; ...

не могу понять задачку :) Даны натуральные числа p и q. Получить все делители числа q, взаимно простые с p - C++
Даны натуральные числа p и q. Получить все делители числа q, взаимно простые с p.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fishec
119 / 119 / 30
Регистрация: 07.09.2013
Сообщений: 338
20.09.2013, 23:31 #16
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 <vcl.h>
#include <iostream>
#include <math.h>
using namespace std;
 
bool isSimple(long long A) {
    for (long long i=2;i<=sqrt(A);i++) {
        if (A%i==0){
            return false;
        }
    }
    return true;
}
int main(){
long long A=600851475143,result=1;
for (long long i=2 ;i<=sqrt(A) ;i++) {
    if (isSimple(i)&&(A%i==0)){
        result=i;
        break;
    }
}
result=A/result;
cout<<result<<endl;
system("pause");
return 0;
}
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
20.09.2013, 23:37 #17
DmitryM5, ты че, деревянный? Я тебе еще во втором посте сказал в чем у тебя проблема. Тебе гордость не позволяет это понять или что?
Если ты вообще ничего не понимаешь, то вот тебе решение:
C++
1
2
if ( flag ) return true;
return false;
Надеюсь догадаешься куда вставить.
Это выражение можно легко заменить на: return !!(flag);
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 829
Записей в блоге: 1
21.09.2013, 00:00  [ТС] #18
Цитата Сообщение от castaway Посмотреть сообщение
DmitryM5, ты че, деревянный? Я тебе еще во втором посте сказал в чем у тебя проблема. Тебе гордость не позволяет это понять или что?
Если ты вообще ничего не понимаешь, то вот тебе решение:
C++
1
2
if ( flag ) return true;
return false;
Надеюсь догадаешься куда вставить.
Это выражение можно легко заменить на: return !!(flag);
Оловянный я.
Уже без флагов сделали,что тут не так тоже чтоли??
C++
1
2
3
4
5
6
7
8
bool isSimple(long long A) {
    for (long long i=2;i<sqrt(A);i++) {
        if (A%i==0)
            return false;
   
}
   return true;
}


И этот ответ 600851475143=8462696833*71 не подходит...
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 00:10 #19
В алгоритм я не вникал, но тут уже нет той проблемы, которую ты обозначил в теме.
fishec
119 / 119 / 30
Регистрация: 07.09.2013
Сообщений: 338
21.09.2013, 00:37 #20
Цитата Сообщение от DmitryM5 Посмотреть сообщение
И этот ответ 600851475143=8462696833*71 не подходит...
Да алгоритм не правильный
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 00:41 #21
Я так понимаю что изначальная проблема решена. Поэтому советую создать новую тему и обозначить в ней иную проблему, если таковая имеется. Не стоит путаться в нескольких проблемах в одной теме.
fishec
119 / 119 / 30
Регистрация: 07.09.2013
Сообщений: 338
21.09.2013, 00:45 #22
600851475143 = 71*839*1471*6857
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
#include <vcl.h>
#include <iostream>
#include <math.h>
using namespace std;
 
bool isSimple(long long A) {
    for (long long i=2;i<=sqrt(A);i++) {
        if (A%i==0){
            return false;
        }
    }
    return true;
}
 
int main(){
long long A=600851475143,result;
for (long long i=sqrt(A) ;i>1 ;i--) {
    if (isSimple(i)&&(A%i==0)){
        result=i;
        break;
    }
}
 
cout<<result<<endl;
system("pause");
return 0;
}
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 829
Записей в блоге: 1
21.09.2013, 12:46  [ТС] #23
Цитата Сообщение от fishec Посмотреть сообщение
600851475143 = 71*839*1471*6857
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
#include <vcl.h>
#include <iostream>
#include <math.h>
using namespace std;
 
bool isSimple(long long A) {
    for (long long i=2;i<=sqrt(A);i++) {
        if (A%i==0){
            return false;
        }
    }
    return true;
}
 
int main(){
long long A=600851475143,result;
for (long long i=sqrt(A) ;i>1 ;i--) {
    if (isSimple(i)&&(A%i==0)){
        result=i;
        break;
    }
}
 
cout<<result<<endl;
system("pause");
return 0;
}
Благодарствую!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2013, 12:46
Привет! Вот еще темы с ответами:

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

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

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

Получить все делители числа q, взаимно простые к p - C++
Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p. помогите пожалуйста.


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

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

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