1 / 6
Dec 2016

include

include

using namespace std;
int n, a,b=0;
int mniejsze[100000];

int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
for(int i=0; i<a/2; i++)
{
mniejsze[i]=i+1;
}

for(int i=1;i<a/2;i++)
{

if(a%mniejsze[i]==0)
{
b=b+1;
} }
if(b>0)
{

b=b-b;
cout<<"NIE"<<endl;
}
else
cout<<"TAK"<<endl;

}
return 0;
}

  • created

    Dec '16
  • last reply

    Feb '17
  • 5

    replies

  • 700

    views

  • 5

    users

Twój program dla takich danych wejściowych :
10
1
2
3
4
5
6
7
8
9
10


TAK
TAK
TAK
NIE
TAK
NIE
TAK
NIE
NIE
NIE

a więc dla tych danych już masz błąd .

dzięki :slight_smile: głupi ja że nie wiedziałem że 1 nie jest liczbą pierwszą

1 month later

Witam. Nie wiem czy dobrze zrozumiałem zadanie, ale po wpisaniu input pod spodem wyskakuje TAK lub NIE, ale i tak mi nie zalicza. Ktoś może doradzić?

using namespace std;
int main()
{

int liczba;
int reszta = 0;
cin >> liczba;

    for (int i = 1 ; i <= liczba ; i++)
    {
        if (liczba%i == 0)
        {
            reszta++;
        }
    }

    if (reszta > 2 || liczba == 1 )
    {cout << "NIE" << endl;}
    else
    {cout << "TAK" << endl;}
    }

Tu masz tylko rozwiązanie dla jednego testu, a w zadaniu jest wyraźnie napisane, że zadanie musi sie składac z: n - liczba testów n<100000,

witaj są dwie metody rozwiązania tego zadania:1. Sito Eratostenesa2.Chiński test Pierwszości
ja doradzałbym zastosowanie tej pierwszej bo w opisanym zestawue danych da bardziej dokładne wyniki zaprezentuję dla zbioru liczb 1..12 by było prościej pomocniczo wyciągam pierwiastek z 12 =3 potrzebuję liczby całkowitej więc to co po przecinku obcinam
krok 1
1 2 3 4 5 6 7 8 9 10 11 12
krok 2
23456789101112
krok 3 biorę 2 i przy jej pomocy wyrzucam jej wielokrotności
2357911
krok 3 biorę 3 i przy jej pomocy wyrzucam jej wielokrotności ostatecznie otrzymując
235711
i tak mamy same liczby pierwsze