#include<iostream>
#include<map>
#include<algorithm>
#include<math.h>
using namespace std ;
map< long long int , long long int > prim ;
map< long long int , long long int >::iterator it ;
int c, counter, check ;
long long int b ;
int prime( long long int t)
{
if( t==1 )
{
prim[1] = 1 ;
counter = 1 ;
it=prim.begin() ;
//cout<< it->second ;
return 1 ;
}
else
{
check = -1 ;
long long int f ;
f= int(sqrt(t)) ; // could create prob
for( it=prim.begin() ; it!= prim.end() || it->second <=f ; it++)
{
if( (t % (it->second))==0 && it->second != 1 )
{
cout << "not prime " << "\n" ;
check = 0 ;
// not prime
break ;
}
}
if(check==-1)
{
// prime ;
counter ++ ;
prim[counter] = t ;
return 1 ;
}
else if(check==0)
return 0 ;
}
}
int main()
{
int check2 ;
check2 = 1 ; // value set 1 to call it prime
cout<< "input no ";
cout<<"\n";
cin >>b ;
for( long long int z=1 ;z <=int(sqrt(b)); z++ )
{
c = prime(z) ;
//cout<<"z is "<<z <<"\n";
if ( c==1 && z!=1 )
{
if((b%z) == 0)
{
//cout<< "not prime " ;
check2 = 0 ;
break ;
}
}
}
if(check2!=0)
{
cout<<"\n";
cout<< "prime" ;
}
else
cout<< "not prime " ;
for( it=prim.begin() ; it!= prim.end() ; it++)
{
cout<<"\n" ;
cout<< it->first ;
cout<< it->second ;
cout<< " \n" ;
}
return 0 ;
}
ну, у меня проблемы с числами, такими как выше 200, и они являются простыми. программа не выполняется должным образом, выдавая непредвиденные значения.
если вы, ребята, могли бы рассказать мне об ошибках или лучших способах создания карты простых чисел, пожалуйста!
a, c,d , h , i ,j , k , l, b
не являются хорошими именами для переменных; на чтение и понимание программы с такими именами уходит гораздо больше времени; и труднее самому найти проблемы... - person Alex Shesterov   schedule 10.02.2015map
? Для этого лучше подойдет простойvector
. - person alain   schedule 10.02.2015