Liczby pierwsze - matura podstawowa 2009 - zad.5
Kod był wyświetlany 4207 razy.
    /*
  Name: Liczby pierwsze
  Copyright: GPL GNU
  Date: 02-06-10 20:36
  Description: Matura podstawowa 2009 - zad.5
  Liczba pierwsza to liczba naturalna większa od 1, która ma dokładnie dwa 
  dzielniki naturalne: 1 i samą siebie.
Przykłady liczb pierwszych:
7
11
29
Liczba 21 nie jest liczbą pierwszą, ponieważ oprócz liczby 1 i 21 jej dzielnikami 
są także 3 i 7.
W pliku o nazwie liczby.txt umieszczono w kolejnych wierszach 500 liczb całkowitych
dodatnich, po jednej w wierszu, z których każda liczba ma co najwyżej 6 cyfr. Napisz
program, za pomocą którego otrzymasz tylko te liczby z pliku liczby.txt, które są
kwadratami liczb pierwszych. Na przykład liczba 49 jest kwadratem liczby pierwszej –
49 = 72 . Wyniki zapisz w pliku zad_5.txt. Twój program powinien działać poprawnie
również wtedy, gdy plik liczby.txt będzie zawierał 500 innych liczb całkowitych
dodatnich, o co najwyżej 6 cyfrach, każda liczba w osobnym wierszu.
  
*/
#include<fstream>
#include<math.h>
using namespace std;

int main()
{
    bool pierwsze[1000000];
    int liczby[500];
    
    for(int i=2;i*i<1000000;i++)        //sito Eratostenesa
    {
            if(pierwsze[i]==true)
            continue;
            else
            for(int j=i*2;j<100001;j=j+i)
            pierwsze[j]=true;
            }
    
    ifstream czytnik("liczby.txt");
    
    for(int i=0;i<500;i++)
    czytnik>>liczby[i];
    
    czytnik.close();
    
    ofstream dlugopis("zad_5.txt");
    
    for(int i=0;i<500;i++)
    if(sqrt(liczby[i])==static_cast<int>(sqrt(liczby[i])))  //sprawdzanie czy pierwiastek jest liczbą całkowitą
    if(pierwsze[static_cast<int>(sqrt(liczby[i]))]==false)  //sparwadzanie czy pierwiastek jest liczbą pierwszą
    dlugopis<<liczby[i]<<endl;
    
    dlugopis.close();
    
    return 0;
    }
    
Pobierz plik tekstowy
Administrator WJL
PHP&SQL coded by NOVA-IT