Diskuze: Otázka k úkolu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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.
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 + " , ");
}
}
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.
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??
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.
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;
}
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);
}
Zobrazeno 11 zpráv z 11.