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

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

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

Переполнение типа. Нахождение простых чисел алгоритмом Лемана. Арифметика остатков - C++

11.03.2014, 20:38. Просмотров 488. Ответов 0
Метки нет (Все метки)

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
45
46
47
48
49
50
51
52
53
#include <vcl.h>
#pragma hdrstop
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
//---------------------------------------------------------------------------
#pragma argsused
int main()
{  int a,p;
  cout << "chislo dla testa: "; cin >> p ;
   a = rand() % (p-1);
  cout << "chislo a = " << a << endl ;
 //k= a ^((p-1) div 2) mod p;  - вычисляем по поэтапно
  double k0;
  k0=(p-1)/2;      // показатель степени
  int k01;
  k01 = (int) k0;       //  целая часть показателя степени (p-1) div 2
  cout<<"k01 = "<< k01 <<endl;
  int k1;
  k1=pow(a,k01);     //    возводим в степень a ^((p-1) div 2)
   cout<<"k1 = "<< k1 <<endl;
   int  k;
  k= fmod(k1,p);  // отделяем дробную часть
  cout<<"!!!!! k = "<< k <<endl;
              /*//+++++++ арифметика остатков
      double kk0;
  kk0=(p-1)/2;      // показатель степени
  int kk01;
  kk01 = (int) kk0;       //  целая часть показателя степени (p-1) div 2
  cout<<"kk01 = "<< kk01 <<endl;
    int  kk1;
  kk1= fmod(a,p);  // отделяем дробную часть     основание
    int kk2;
  kk2=pow(kk1,kk01);     //    возводим в степень a ^((p-1) div 2)
  long k;
  k= fmod(kk2,p);
  cout<<"!!!!! k = "<< k <<endl;
  //+++++++++ */
  int p01= p-1 ; // для условия
  if (k == 1) {
        cout<<"  Prostoe chislo "<< p  <<endl;
        }
        else if (k == p01 )
        {
        cout<<"  Prostoe chislo "<< p  <<endl;
        }
    else {
        cout<<" Ne prostoe chislo "<< p  <<endl;
    }
    getch(); getch();
    return 0;
}
Когда тестирую большое простое число например 3991139 функция pow в выражении k1=pow(a,k01) выдает переполнение типа.
Пробовала применить арифметику остатков не помогло...
Подскажите пожалуйста как исправить, не понимаю в чем ошибка....
0
Миниатюры
Переполнение типа. Нахождение простых чисел алгоритмом Лемана. Арифметика остатков  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 20:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переполнение типа. Нахождение простых чисел алгоритмом Лемана. Арифметика остатков (C++):

Целочисленная арифметика: На отрезке [A, B] подсчитать количество простых чисел - C++
На отрезке подсчитать количество простых чисел (1&lt;=A &lt;= B &lt;= 10000).

Нахождение простых чисел - C++
Доброго времени суток. Помогите в написании программы,которая бы находила простые числа в пределах от 2 до 100. Зараннее благодарен.

Нахождение простых чисел.( - C++
Люди я все понимаю, этот вопрос наверное покажется глупым, точнее он таковым и является. Программа нахождения простых чисел cin &gt;&gt;...

Нахождение простых чисел в С++ - C++
Уважаемые форумчане, помогите пожалуйста сделать прогу работающей: #include&lt;iostream&gt; using namespace std; int main(){ int N,...

Нахождение простых чисел в массиве - C++
Ввести 20 чесел в массив и найти среди них все простые числа Пожалйста помогите :( Буду оч благодарна

Нахождение парных простых чисел с++ - C++
Дорогие форумчане прошу помощи. Парные простые числа.парными простыми числами называют два простых числа, разность которых равна...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2014, 20:38
Привет! Вот еще темы с ответами:

Рекурсивное нахождение простых чисел - C++
Дано число Х, определить количество простых чисел меньших Х. С использованием рекурсивных методов. Задача пустяковая, учу С#, а задание...

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

Нахождение простых чисел на отрезке [m;n] - C++
INPUT.TXT содержит два натуральных числа M и N, разделенных пробелом (2 ≤ M ≤ N ≤ 106). В выходной файл OUTPUT.TXT выведите все простые...

Нахождение простых чисел в интервале от 1 до 100 - C++
Приветствую. Мне нужно найти все простые числа от 1 до 100. Вот мой &quot;каркас&quot;: #include &lt;iostream&gt; using namespace std; int main() {...


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

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

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