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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.88
AgentumA
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
24.11.2010, 18:47     Проверка простоты чисел #1
Ребят,вот прожка...проверка простоты чисел на основе малой теоремы ферма...
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)


в чем трабла?просто если менять типы переменных,то неправильно вроде считает...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2010, 18:47     Проверка простоты чисел
Посмотрите здесь:

C++ Проверка чисел
[Cи] Проверка чисел на простоту C++
Проверка чисел на простоту C++
C++ Проверка кратности чисел.
Тест простоты C++
C++ Проверка ввода чисел
C++ Ограничение на ввод чисел и проверка чисел
C++ Программа проверки простоты по алгоритму

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RepoMen
 Аватар для RepoMen
13 / 2 / 1
Регистрация: 24.11.2010
Сообщений: 10
24.11.2010, 19:21     Проверка простоты чисел #2
Цитата Сообщение от AgentumA Посмотреть сообщение
в чем трабла?
у тебя pow в качесве аргумента получает два числа типа int
Matan!
13 / 13 / 1
Регистрация: 31.05.2013
Сообщений: 206
Записей в блоге: 2
Завершенные тесты: 1
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;   
}
Yandex
Объявления
31.05.2013, 15:08     Проверка простоты чисел
Ответ Создать тему
Опции темы

Текущее время: 18:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru