Stránka 1 z 1

Programování v C - generování prvočísel

Napsal: 02 kvě 2013 10:48
od kiklopik
Lidi potřebuju pomoct mám z programování semestrálku se zadáním:

Napište program v jazyce C: generování prvočísel
Vytvořte program, který bude generovat prvočísla dle zadání uživatele, např. prvočísla
v daném intervalu, všechna prvočísla do zadaného čísla apod.
Umožněte načtení dat z klávesnice a ze souboru. Soubor je textový. Výstup programu
umožněte do souboru nebo na obrazovku. Ovládání programu umožněte pomocí
jednoduchého menu. Program musí obsahovat alespoň jednu uživatelskou funkci a musí
být ošetřen proti chybným vstupům.

Tak jeslti by jste to někdo nedokázal vytvořit díky moc.

Re: Programování v C - generování prvočísel

Napsal: 02 kvě 2013 12:25
od honzaik
nyslim ze ti to nikdo nebude vytvaret :D jediny co ti poradim je ze si najdi najakej algoritmus na hledani prvocisel a implementuj to. to snad umis

--- Doplnění předchozího příspěvku (02 Kvě 2013 16:33) ---

ehm tak díky mé povaze sem si musel dát "challenge" to zkusit udělat

Kód: Vybrat vše

package eu.honzaik.test;

public class Test04 {

   private static int start = 0;
   private static int end = 1000;
   private static int primes = 0;
   
   public static void main(String[] args) { 
      double startTime = System.currentTimeMillis();
      while(start < end){
         checkPrime(start);
         start++;
      }
      System.out.println(primes);
      System.out.println("It took "  + (System.currentTimeMillis() - startTime)/1000  + " s");
   }

   private static void checkPrime(int input) {
      int problems = 0;
      for(int i = 1; i < input / 2 + 1; i++){
         if(input % i == 0){
            problems++;
            if(problems > 1) return;
         }
      }
      if(problems == 1){
         //System.out.println(input + " is a prime!");
         primes++;
      }
   }

}


je to v javě :D a je to teda pomalý, ale jsem spokojen že sem to splácal za 10 min a vymyslel si vlastní algoritmus (když se nad tim zamyslim je to primitvní, takže ne moc rychlý)
myslim že v těhle příkladech je java to samý jako C (nečekaně, java vychází z C :D)

základ je tohle podle mě :D, ikdyž to zcela neřeší tvůj problem :D

edit: trochu sem to optimalizoval :D

Re: Programování v C - generování prvočísel

Napsal: 02 kvě 2013 22:48
od faraon
A s čím přesně máš problém?

  • Jak poznat prvočíslo? Nejdřív se mrkni jestli není číslo sudé, a pak ho projeď cyklem od 3 do druhé odmocniny toho čísla (přičítej po dvou, protože stačí testovat liché dělitele), pokud ti někde vyjde dělení beze zbytku, není to prvočíslo.
  • Jak komunikovat s uživatelem? Stačí printf() a scanf().
  • Jak načítat a zapisovat soubor? Zase stačí fopen(), fprintf(), fscanf() a fclose().
  • Jak vytvořit menu? Pomocí switch() a case.

Tu uživatelskou funkci můžeš použít zrovna na to zjištění jestli je prvočíslo: prvocislo(cislo), a také na generování řady prvočísel v zadaném rozsahu, ta se tak bude moci použít pro různá zadání: generuj(pocatek,konec), a bude využívat tu předchozí...