-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgrid.cpp
More file actions
executable file
·65 lines (54 loc) · 2.42 KB
/
Copy pathgrid.cpp
File metadata and controls
executable file
·65 lines (54 loc) · 2.42 KB
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
54
55
56
57
58
59
60
61
62
63
64
65
#include <cstdlib>
#include <iostream>
#include <NTL/ZZ.h> //libreria con numeros ZZ
#include "imp_C_O(12).h" //libreria con el AKS
#include <fstream> //escritura de archivos
NTL_CLIENT
int main(int argc, char *argv[])
//Programa que realiza un test de esfuerzo bruto. Preparado para
//realizar computación GRID "manual". Testea la primalidad (mediante
//el algoritmo AKS y una implementación de Miller-Rabin) de los
//numeros dados desde rango.txt e imprime los resultados en
//salida.txt.
//Con la variable opcion, tarcer parámetro leído de rango.txt,
//controlamos que versión del algoritmo AKS deseamos ejecutar.
{
ZZ a; //inicio
ZZ i; //contador
ZZ b; //final
int opcion; //0 = algoritmo estándar, !=0 algoritmo modificado
unsigned long j; //contador de primos
short aux; //auxiliar
ifstream entrada("rango.txt", ios::in); //abro ficero con rango
entrada >> a >> b >> opcion; //leo limites
entrada.close(); //cierro fichero
ofstream salida; // objeto de la clase ofstream
salida.open("salida.txt",ios::out); //abro archivo
clock_t total; //tiempo total
clock_t t; //variable que controla el tiempo
salida << "Tabla de tiempos AKS" << endl;
j=0; //inicializo contador de primos
total=clock(); //cronometro total
for (i=a;i <= b; i++) //criba AKS
{
t=clock(); //cronometro
aux=AKS(to_ZZ(i),opcion); //auxiliar para no contar la suma de los primos
salida << i << " " << aux << " " << (clock()-t)/(double)CLOCKS_PER_SEC << endl;
j+=aux; //cuento el numero de primos
}
salida << endl << "Tiempo total empleado = " << (clock()-total)/(double)CLOCKS_PER_SEC << endl;
salida << endl << "La cantidad de números primos en el intervalo ["<<a<<","<<b<<"] es " << j << endl;
salida << endl << "Tabla de tiempos Miller-Rabin test" <<endl;
j=0; //inicializo contador de primos
total=clock(); //cronometro total
for (i=1; i <=b; i++) //criba probabilistica
{
t=clock(); //cronometro
aux=ProbPrime(to_ZZ(i), 1);
salida << i << " " << aux << " " <<(clock()-t)/(double)CLOCKS_PER_SEC << endl;
j+=aux;
}
salida << endl << "Tiempo total empleado = " << (clock()-total)/(double)CLOCKS_PER_SEC << endl << endl;
salida << endl << "La cantidad de números primos en el intervalo ["<<a<<","<<b<<"] es " << j << endl;
salida.close(); //cierro el fichero
} // main