Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

algorytm, liczba pierwsza

Ostatnio zmodyfikowano 2017-05-19 23:44
Autor Wiadomość
usmiech
a moze dzialajacy kod rozwiaze te watpliwosci.... :)
» 2013-01-22 17:21:19
kod sprawdza czy wpisana przez uzytkownika liczba jest liczba pierwsza..., nastepnie podaje dzielniki.. a w koncu podaje kolejna liczbe pierwsza..... :)

C/C++
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;

bool isPrime( int n );
void getDivisors( int n );
void getNextPrime( int n );

int MIN_PRIME = 2;

int main()
{
    int userInput;
   
   
    while( true )
    {
        cout << "Enter a num (0 = Exit) and press ENTER: ";
        cin >> userInput;
       
        if( userInput == 0 )
             break;
       
        if( isPrime( userInput ) )
       
             cout << "num is prime" << endl;
        else
             cout << "num is not prime" << endl;
       
        getDivisors( userInput );
        cout << endl;
        userInput++;
       
        getNextPrime( userInput );
       
        cout << endl;
    }
   
    system( "PAUSE" );
    return 0;
}

bool isPrime( int i_numberToCheck )
{
    int limit = sqrt( double( i_numberToCheck ) );
   
    for( int i = MIN_PRIME; i <= limit; i++ )
    {
        if( i_numberToCheck % i == 0 )
             return false;
       
    }
   
    return true;
}

void getDivisors( int i_numberToCheck )
{
    int sqrt_of_n = sqrt( double( i_numberToCheck ) );
   
    for( int i = MIN_PRIME; i <= sqrt_of_n; i++ )
    {
        if( i_numberToCheck % i == 0 )
        {
            cout << i << ", ";
            getDivisors( i_numberToCheck / i );
           
            return;
        }
    }
    cout << i_numberToCheck;
}

void getNextPrime( int i_numberToCheck )
{
    int limit = sqrt( double( i_numberToCheck ) );
   
    for( int i = MIN_PRIME; i <= limit; i++ )
    {
        if( i_numberToCheck % i == 0 )
        {
            getNextPrime( ++i_numberToCheck );
           
            return;
        }
    }
   
    cout << "Next Prime: " << i_numberToCheck;
}

milej zabawy :)
w sumie lubie zabawe na funkcjach.... i jeszcze cos ... C++ ucze sie od 2 tygodni ...:)
ucze sie krotko, ale wiem, ze podstawa to dobry algorytm......
P-74690
gsmx98
Witam
» 2017-05-19 23:44:59
mam problem bo nie za bardzo wiem jak sprawdzać odprowadzone do tablicy liczby wylosowane. Mam za zadanie napisac program który wylosuje liczby z podanego przedziału no i to mam ale druga czesc to ile z nich to liczby pierwsze :/
 kod który gdzieś oszukałem przeanalizowałem i spełnia oczekiwania co do losowania ale nie wiem jak dopisac aby po wylosowaniu nowej liczby system nią sprawdził i jeśli to zadziała to dodaje je do kolejnej liczby pierwszej z przedziału ktoś pomoże ???


#include <time.h>
#include <iostream>
using namespace std;

int main()
{
  int zakres,*tab,ile_liczb;
  cout<<"podaj z ilu liczb chcesz losowac : ";
  cin>>zakres;
    tab=new int[zakres];
  cout<<"podaj ile liczb chcesz losowac z zakresu od 1 do "<<zakres<<" : ";
  cin>>ile_liczb; 
    time_t t;
    srand((unsigned) time(&t));
for (int i=0; i <zakres; i++)  tab = i+1;
for (int i=0; i <ile_liczb; i++)
  {
   int k=rand()%zakres;
   swap (tab, tab[k]); 
  }      
cout<<"wylosowano:"<<endl;
    for(int i=0;i<zakres;i++)cout<<tab<<" ";
  delete [] tab; 
return 0;
}

 no i sprawdzacz czy pierwsza ..


bool czy_pierwsza(int n)
{
  if(n<2)
    return false; //gdy liczba jest mniejsza niż 2 to nie jest pierwszą
 
  for(int i=2;i*i<=n;i++)
    if(n%i==0)
      return false; //gdy znajdziemy dzielnik, to dana liczba nie jest pierwsza
  return true;
}
P-161320
1 « 2 »
Poprzednia strona Strona 2 z 2