Autor | Zpráva | ||
---|---|---|---|
korat Profil * |
#1 · Zasláno: 9. 1. 2013, 13:31:28
Zdravím, potřeboval bych PHP skript, který dokáže vypsat všechny prvočíselné dvojice až po pevně zadané číslo do pole na webu.
Díky :) |
||
Alphard Profil |
#2 · Zasláno: 9. 1. 2013, 13:33:49
Nezakládejte duplicity. Už jsem se jednou ptal, jak velká ta hranice bude.
|
||
korat Profil * |
#3 · Zasláno: 9. 1. 2013, 13:35:15
To ano, ale potřeboval bych přímo tento kód napsaný...
|
||
peta Profil |
Co jsi nasel googlem? Tys nehledal, jo?
Co jsi zkusil udelat sam? Tys nic nezkusil? Zkusil jsi priklad z te wiki prepsat sam? Tys to nezkusil? Symbolicky: pole = () prochazej(i = 2 az n) { bool = false prochazej(j = 0 az count(pole)) { if (i % pole[j] == 0) {bool = true; break;} // celociselne deleni se vsemi prvky v poli, pokud je nula, je celociselne delitelny } if bool continue; else pole[] = i } pole[] = 1; // jednicka je prvocislo a celociselne jsou jim delitelne vsechny echo '<pre>'; print_r(pole); |
||
SeparateSK Profil |
<?php function generuj($po){ $i=2; $r=array(1); while($i<$po){ $p=0; for($j=2;$j<$i;$j++){ //testuj delitelnost so vsetkymi cislami od 2 az po $i if($i%$j==0){ //ak je zvysok 0, tak pridaj 1 do $p $p++; break; //ak je p vacsie ako nula, resp cislo sa da delit, potom je uz tento cyklus zbytocny } } if($p==0) //ak je $p 0, tak pridaj to pola prvocisel $r[]=$i; $i++; } return $r; } $arr=generuj(500); foreach($arr as $n) //prejdi kazdy prvok v poli echo "$n <br/>"; echo "Pocet: ".count($arr); ?> |
||
korat Profil * |
#6 · Zasláno: 10. 1. 2013, 19:39:57
A ještě jak dosáhnout toho, aby se vypsaly čísla vedle sebe po dvou? Díky moc :)
|
||
SeparateSK Profil |
Myslíš?
1,2, 3,5, 7,11 atď? foreach($arr as $n) //prejdi kazdy prvok v poli echo "$n <br/>"; for($idx=0;$idx<count($arr);$idx++){ echo "$arr[$idx],"; $idx++; echo "$arr[$idx],<br />"; } |
||
korat Profil * |
#8 · Zasláno: 11. 1. 2013, 10:57:06 · Upravil/a: korat
Díky mnohokrát! :)
ještě se chci zeptat, šlo by přidat úplně na začátek pole, kam se bude dát napsat ono číslo , vedle toho tlačítko Pocitej a vypíše do zadaného čísla do pole? Poslední dotaz, díky moc :) |
||
peta Profil |
#9 · Zasláno: 11. 1. 2013, 12:39:31
Ano, slo.
|
||
Joker Profil |
#10 · Zasláno: 11. 1. 2013, 12:42:10
SeparateSK:
Jedna poznámka, výpisy typu echo "$arr[$idx],"; pro začátečníky nejsou ideální, lepší by bylo použít spojování řetězců a proměnné dát mimo uvozovky.
Takhle mají začátečníci pak problém chápat, co vlastně patří a nepatří do uvozovek. korat: „šlo by přidat úplně na začátek pole, kam se bude dát napsat ono číslo , vedle toho tlačítko Pocitej a vypíše do zadaného čísla do pole?“ Ano, šlo. Dá se tam formulář se dvěma prvky <input> (vstupní pole a odesílací tlačítko) a v PHP se to pak načte z $_GET nebo $_POST (podle toho, jestli jako metodu formuláře dáte get nebo post) a pak se to použije jako argument funkce generuj(). |
||
SeparateSK Profil |
Teda tak ako hovoril Joker:
<form> <input type="text" name="po" placeholder="100" /> <input type="submit" name="submit" value="Pocitaj" /> </form> <?php function generuj($po){ $i=2; $r=array(1); while($i<$po){ $p=0; for($j=2;$j<$i;$j++){ //testuj delitelnost so vsetkymi cislami od 2 az po $i if($i%$j==0){ //ak je zvysok 0, tak pridaj 1 do $p $p++; break; //ak je p vacsie ako nula, resp cislo sa da delit, potom je uz tento cyklus zbytocny } } if($p==0) //ak je $p 0, tak pridaj do pola prvocisel $r[]=$i; $i++; } return $r; } if($_GET["po"]=="") $_GET["po"]=100; if($_GET["submit"]&&is_numeric($_GET["po"])){ $arr=generuj($_GET["po"]); for($idx=0;$idx<count($arr);$idx++){ echo $arr[$idx].","; $idx++; echo $arr[$idx].",<br />"; } echo "Počet: ".count($arr); } ?> |
||
Časová prodleva: 11 let
|
0