Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania
Viewing all articles
Browse latest Browse all 65225

Pentla For (liczby pierwsze - dziwne zachowanie programu)

$
0
0
Witam wszystkich forumowiczow :)
Moj problem polega na tym...

Program wykonuje sie prawidlowo dla tej petli for:
  for(int i=2;i*i<=n;i++)
    if(n%i==0)

Poprawnie wyszukuje liczbe pierwsza itp.

Dlaczego wiec program zle pokazuje, jezeli w miejsce i*i<=n damy i<=n?
 for(int i=2;i<=n;i++)
    if(n%i==0)

Wydawalo mi sie, ze to i*i jest po to, by program wykonal mniej operacji, bo szybciej dochodzimy do tego, jak dlugo pentla ma sie wykonywac.


Prosze o dokladne wytlumaczenie bo w C++ programuje od krotkiego czasu i nie jestem geniuszem matematycznym :)


#include<iostream>
#include<cstdlib>
using namespace std;
 
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;
}
 
int main()
{
  int n;
 
  cout<<"Podaj liczbę: ";
  cin>>n;
 
  if(czy_pierwsza(n)) //lub czy_pierwsza(n)==1
    cout<<"Liczba "<<n<<" jest pierwsza"<<endl;
  else
    cout<<"Liczba "<<n<<" nie jest pierwsza"<<endl;
}

 


Viewing all articles
Browse latest Browse all 65225

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>