Avatar
Veganekk
Člen
Avatar
Veganekk:

Dobrý den
Chci se zeptat když mám najít všechna přirozená čísla něž bude menší dané N, která jsou dělitelná svojí cifrou.
To znamená že se to dá dělat podle

  1. Podle dělitelnosti čísel(2,3,4,5,­6,7,8,9,10)
  2. Hledáním prvočísel,která jsou dělitelná jen sama sebou a jedničkou.

Asi lepší způsob hledání těch čísel bude přes prvočísla jestli se nemýlím.
Děkuji za odpověd

Odpovědět 2.11.2013 19:01
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Lako
Člen
Avatar
Odpovídá na Veganekk
Lako:

A máš najít analytické řešení, nebo na to udělat program?
Jestli program, tak to prostě proženeš forem a zeptáš se na tu podmínku.
Jestli analytické, tak to je mírně jiné fórum, ale i tak ti tu někteří pomohou snad.

 
Nahoru Odpovědět 2.11.2013 20:12
Avatar
Posix
Člen
Avatar
Nahoru Odpovědět  +2 2.11.2013 20:20
Proč to dělat jednoduše, když to jde složitě.
Avatar
Veganekk
Člen
Avatar
Veganekk:

Je tento kod dobre?
Jinak presne zadani--->Nalezněte všechna přirozená čísla menší než dané N, která jsou dělitelná každou svou. A zajima me jestli tento kod je dobre ci nikoliv...

int N = Convert.ToInt32(Console.ReadLine());
            int zbytek;
            int cislo;
            for (int i = 0; i < N; i++)
            {
               bool jeDelitelne = true;
                cislo = i;
                while (cislo > 0)
                {
                    zbytek = cislo % 10;
                    cislo = (cislo - zbytek) / 10;
                   if (zbytek == 0)
                    {
                        jeDelitelne = false;
                    }
                    else
                    {
                        if ((i % zbytek) != 0)
                        {
                            jeDelitelne = false;
                        }
                    }
                }
                if (jeDelitelne==true)
                {
                    Console.Write(i + " , ");
                }
            }
Nahoru Odpovědět  -3 9.11.2013 23:43
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Panda38
Redaktor
Avatar
Odpovídá na Veganekk
Panda38:

První řádek by mohl nejspíš být dobře. Zbytek ani náhodou. Doporučuji Ti nejdříve se podívat co znamená prvočíslo a co znamená číslo dělitelné něčím.

 
Nahoru Odpovědět 10.11.2013 5:17
Avatar
Veganekk
Člen
Avatar
Veganekk:

Prvocislo je cislo delitelne samou sebou a 1. Asi to nebudu hledat pres prvocisla protoze musim tjistit jestli jsou cisla delitelna kazdou svou cifrou....
A ten kod mam dobre ci nikoliv teda??

Nahoru Odpovědět 10.11.2013 14:18
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Panda38
Redaktor
Avatar
Odpovídá na Veganekk
Panda38:

Kód máš tak špatně, že se Ti ho ani nikdo nepokouší připomínkovat. Máš tam jen jakýsi náznak pokusu o test dělitelnosti deseti, ale žádný náznak testů na prvočísla. Nevím jak jsi uvažoval, asi Ti není jasné co jsou prvočísla a jak se testují, protože to tam vůbec neděláš.

Aha teď mi dochází z Tvých textů - Ty si myslíš, že prvočísla se testují "ciframi" v čísle (a proto to dělíš deseti). To sis někde něco špatně přečetl. Prvočísla jsou čísla, která se nedají rozložit na žádné další součinitele, kromě 1 a čísla samotného. To znamená - 6 se dá rozložit na 2*3 , je tedy dělitelné 2 nebo 3 a není prvočíslo. Ale číslo 7 se nedá rozložit, dá se vyjádřit pouze jako 7*1, je prvočíslo. Test N na prvočíslo znamená, že to číslo zkoušíš dělit čísly 2 až N-1 (otpimálněji 2..sqrt(N)) a zjišťuješ, zda je některým z nich dělitelné beze zbytku.

 
Nahoru Odpovědět 10.11.2013 15:18
Avatar
koňo
Neregistrovaný
Avatar
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Veganekk
Jan Vargovský:
private static List<int> ZiskejPrvocisla(int n)
    {
        if( n < 1)
            throw new Exception();

        var cisla = new List<int>();
        for (int i = 2; i <= n; i++)
            if (JePrvocislo(i))
                cisla.Add(i);
        return cisla;
    }

    private static bool JePrvocislo(int c)
    {
        for (int i = 2; i < c; i++)
        {
            if (c % i == 0)
                return false;
        }
        return true;
    }
 
Nahoru Odpovědět 10.11.2013 15:31
Avatar
Veganekk
Člen
Avatar
Veganekk:

Vy jste me jen spatne pochopili. A asi jsme taky napsal spatne otazku kdyz jsme daval prispevek. A podle zadani viz toto Nalezněte všechna přirozená čísla menší než dané N, která jsou dělitelná každou svou. A zajima me jestli tento kod je dobre ci nikoliv...
Tak jsem si to probiral a dosli mi ze delat to Prvočísla jsou čísla, která jsou dělitelná jen jedničkou a sama sebou. . A v zadani mam najit cisla jenz jsou delitena kazdou svoji cifrou a v tom pripade to je nesmysl. Ne? jestli mám najit vsechna prirozena cisla delitelna kazdou svoji cifrou.
A tak se ptam zda to mam dobre nebo ne.
Zde mám upraveny kod jen pro jedno zjisteni cisla jestli je delitelne.

int jedelitelne(int cislo)
{
        int test = cislo;
        int cifra;
        while(test > 0) {
                cifra = test % 10;
                if (cifra == 0) return(0);
                if ((cislo % cifra) != 0) return(0);
                test = test / 10;
        }
        return(1);
}
Nahoru Odpovědět 10.11.2013 18:58
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
koňo
Neregistrovaný
Avatar
Odpovídá na Veganekk
koňo:

Prijdes mi jako zhulenej... Neumis psat nebo ja nevim

 
Nahoru Odpovědět 10.11.2013 20:28
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.