Új hozzászólás Aktív témák

  • yash

    senior tag

    Miniprogramozo versenyt hirdetek (jatek)!

    A fodij az, hogy mindenki megcsillogtathatja a kepessegeit, es megmutathatja nekunk, hogy o bizony a legjobb es tud valamit, amit mi nem :) Tehat gyakorlatilag semmi, a lenyeg, hogy agytreningezunk.

    A feladat a kovetkezo: primszam kiszamitasa elore elkeszitett kodminta alapjan. A cel az, hogy a meglevo kodot ugy alakitsuk at ASM betetek nelkul es az eredeti szovegeket es funkcionalitast megtartva, hogy a kod a leheto leggyorsabban fusson le. Eredetileg egy szalra van tervezve, de profi programozok vihetnek bele tobbszalu programozast is (peldaul megfelezik a szamtartomanyt, es ket szalon megy a vizsgalat egyszerre). A programnak egyetlen fizikai gepen kell tudnia futni (halozatban szamitas most nem cel). Tovabba a minel kisebb .exe meret is cel, a gyorsasagon felul erre is lehet figyelni (de nem kotelezo). A hibakezelesen lehet modositani, de az eredeti formatum boven megteszi. Tehat a lenyeg a minel optimalizaltabb kod, az eredeti funkciok megtartasa mellett. A leggyorsabb kod a nyertes (azonos hardveren tesztelve), azonos sebessegek mellett a tomorebb kod nyer!

    (A teszteles egy fizikailag ketmagu processzoron lesz tesztelve 2 GHz-en.)

    Akkor lassuk hat vegre az eredeti forraskodot:

    using System;

    namespace TestCon
    {
    class Program
    {
    static void Main(string[] args)
    {
    try
    {
    startApp();
    }
    catch (FormatException e)
    {
    Console.WriteLine("\n\nPozitiv egesz szamokat lehet csak megadni.");
    endApp();
    }
    catch (Exception e)
    {
    Console.WriteLine("\n\nHiba tortent.");
    endApp();
    }
    }

    private static void endApp()
    {
    Console.WriteLine("\n\nA kilepeshez nyomjon le egy billentyut!");
    Console.ReadKey();
    }

    private static void startApp()
    {
    Int64 szam;
    Console.Write("Primszamvizsgalat. Kerem a vizsgalando szamot: ");
    szam = Int64.Parse(Console.ReadLine());
    if (szam > 1)
    {
    Console.WriteLine("\nPrimszamitas folyamatban...\n");
    if (isPrimeWithCount(szam))
    Console.WriteLine("Primszam.");
    else
    Console.WriteLine("Nem primszam.");
    }
    else
    {
    Console.WriteLine("\n\nA vizsgalatot csak egynel nagyobb pozitiv egesz szamokra lehet elvegezni!");
    }
    endApp();
    }

    private static bool isPrimeWithCount(Int64 szam)
    {
    bool val = true;
    int counter = 0;
    Console.Write("\nOsztoi: ");
    for (Int64 i = 2; i < szam; i++)
    {
    if (szam % i == 0)
    {
    val = false;
    counter++;
    Console.Write("{0} ", i);
    }
    }
    if (counter == 0)
    Console.Write("nincs\n\n");
    else
    Console.Write("\n\n{0} osztoja van. ", counter);
    return val;
    }
    }
    }

Új hozzászólás Aktív témák