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

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

24.11.2010, 18:47. Просмотров 3994. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2010, 18:47
Ответы с готовыми решениями:

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

Тест простоты
Выдаёт ошибку выполнения: деление на 0 в строке 13. Подскажите, что не так?...

Программа проверки простоты по алгоритму
Алгоритм описан ниже на фото , нужно чтоб пользователь вводил число n и...

Ограничение на ввод чисел и проверка чисел
решить квадратное уравнение. Сделала задачу, а преподаватель сказал, что это...

Исследовать эффективность двух алгоритмов определения простоты числа
дали задание: Цель: Следует выбрать эффективный алгоритм (по времени) теста...

2
RepoMen
13 / 2 / 0
Регистрация: 24.11.2010
Сообщений: 10
24.11.2010, 19:21 2
Цитата Сообщение от AgentumA Посмотреть сообщение
в чем трабла?
у тебя pow в качесве аргумента получает два числа типа int
0
Matan!
Delphi/Java/DB Dev + Math
512 / 403 / 139
Регистрация: 31.05.2013
Сообщений: 3,236
Записей в блоге: 5
Завершенные тесты: 2
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2013, 15:08

Следует выбрать эффективный алгоритм (по времени) теста простоты числа
Следует выбрать эффективный алгоритм (по времени) теста простоты числа. На...

Написать функцию проверки простоты числа, найти сумму двузначных простых
Написать функцию, определяющую является ли число X простым. С ее помощью найти...

Проверка чисел
Здравствуйте форумчане. Вообщем это код для проверки введенного значения, но...


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

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

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