Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/40: Рейтинг темы: голосов - 40, средняя оценка - 4.50
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
1

Проверка простоты чисел

24.11.2010, 18:47. Показов 7306. Ответов 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
int main()
{
int n; //проверяемое число  
int i; //счетчик циклов
int k; //количество циклов
int a; //основание
int b;
cout << "Test Ferma" << endl << "Enter number: ";
cin >>n;
cout << "Kolichestvo tsiklov: ";
cin >>k;
bool sim_prime; 
sim_prime=true; //предположение, что число n правдоподобно простое  
int rand_2toN(int n);
for (i=0; i<k; i++) //проверка на простоту
{
a=rand_2toN(n)+1;  // выбор случайного основания от 2 до n-1
b=(static_cast<int>(pow(a, n-1)))%n;     
if (b!=1)
{
sim_prime=false;
break;
}
}
if (sim_prime)
cout << "Chislo pravdopodobno prostoe";
else
cout << "Chislo sostavnoe " << a << " - svidetel'";
cin.get();
cin.get();
return 0;
}
int rand_2toN(int n)
{
return rand() %n-3;   
}
при компиляции вылазит:
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\ferma\ferma\ferma.cpp(28) : error C2668: 'pow' : ambiguous call to overloaded function
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(575): could be 'long double pow(long double,int)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(527): or 'float pow(float,int)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(489): or 'double pow(double,int)'
1> while trying to match the argument list '(int, int)'
1>Build log was saved at "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\ferma\ferma\Debug\BuildLog.htm"
1>ferma - 1 error(s), 0 warning(s)


в чем трабла?просто если менять типы переменных,то неправильно вроде считает...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2010, 18:47
Ответы с готовыми решениями:

Проверка простоты числа
Объясните плиз что значит =! , pc - это функция проверки на простоту числа do { cout &lt;&lt;...

Проверка простоты числа
Доброго времени суток, вот два часа мучаюсь не могу понять где ошибка. Ввожу 2 пишет что оно не...

Проверка простоты на лямбда исчислении
Доброго времени суток. Имеется задача проверить на простоту число используя лябда исчисление Не...

Функция Prost (проверка простоты числа), нужны комментарии
function Prost(x:integer):boolean; begin prost:=false; if x=1 then Prost:=true ...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
2
13 / 2 / 0
Регистрация: 24.11.2010
Сообщений: 10
24.11.2010, 19:21 2
Цитата Сообщение от AgentumA Посмотреть сообщение
в чем трабла?
у тебя pow в качесве аргумента получает два числа типа int
0
Модератор
1276 / 869 / 206
Регистрация: 31.05.2013
Сообщений: 5,862
Записей в блоге: 6
31.05.2013, 15:08 3
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
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <time.h>
 
 
int main()
{
    int n; //проверяемое число  
    int i; //счетчик циклов
    int k; //количество циклов
    int a; //основание
    int b;
    std::cout << "Test Ferma" << std::endl << "Enter number: ";
    std::cin >> n;
    std::cout << "Kolichestvo tsiklov: ";
    std::cin >> k;
    bool sim_prime; 
    sim_prime=true; //предположение, что число n правдоподобно простое  
    int rand_2toN(int n);
    for (i=0; i<k; i++) //проверка на простоту
    {
        a=rand_2toN(n)+1;  // выбор случайного основания от 2 до n-1
        int q, N; 
        N=n-1;
        q=pow(static_cast<double>(a), N);
        b=(static_cast<int>(q%n));     
        if (b!=1)
        {
            sim_prime=false;
            break;
        }
    }
    if (sim_prime)
    std::cout << "Chislo pravdopodobno prostoe";
    else
    std::cout << "Chislo sostavnoe " << a << " - svidetel'";
    std::cin.get();
    std::cin.get();
    return 0;
}
int rand_2toN(int n)
{
    return rand() %n-3;   
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2013, 15:08

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Составить таблицу простоты натуральных чисел
Помогите, пожалуйста, составить как можно более длинную таблицу простоты натуральных чисел вида: ...

Алгоритм на проверку простоты суммы двух положительных чисел
Добры день. Передо мной стоит задача написать программу: вводится ряд положительных чисел....

алгоритм Миллера-Рабина проверки простоты многоразрядных чисел.
надо составить алгоритм Миллера-Рабина проверки простоты многоразрядных чисел. Я составил, ...

Процедуры и функции: определение простоты числа, подсчет количества простых чисел
Вводить с клавиатуры числа или задавать их случайным образом в диапазоне от 1 до 99999. Определять...


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

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

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