Skip to Content.
Sympa Menu

tanforum - [Tf] Re: [Tf] Re: [Tf] végtelen, nem szakaszos tizedes tört?

tanforum AT lists.kfki.hu

Subject: Tanárok vitafóruma

List archive

[Tf] Re: [Tf] Re: [Tf] végtelen, nem szakaszos tizedes tört?


Chronological Thread 
  • From: Szántó Tamás <szanto AT mikrovolt.hu>
  • To: <tanforum AT lists.kfki.hu>
  • Subject: [Tf] Re: [Tf] Re: [Tf] végtelen, nem szakaszos tizedes tört?
  • Date: Mon Apr 28 06:05:01 2003
  • List-archive: <http://sunserv.kfki.hu/pipermail/tanforum/>
  • List-id: Tanrok vitafruma <tanforum.lists.kfki.hu>

Tisztelt Lista!

On Wed, 24 Apr 2003, [iso-8859-1] Ferenc Bajan wrote:
> Ot perc alatt se vegzett a szamolassal egy pentiumII-233.

Saját gépemen (Intel Celeron 466 MHz, 32 MB RAM, Win98) is megnéztem a fenti
törtet. Az eredmény 4 perc 8 másodperc. Programomat kijavítottam úgy, hogy
megújítottam azt a részt, ahol leellenőrzi, hogy az osztás maradéka
ismétlődik-e. Az eredmény 27 másodperc. Alább mellékelem ezt a verziót is,
melyet
az előzőhöz hasonlóan kell futtatni.

> A 4509600/116093 osztas eredmenyet nem szurom be ide, de az eredmenykent
> kapott szamban a szakasz hossza a Szanto Tamas-fele scripttel 23714 jegyu.

A scriptet én, vagyis Szántó Ádám (10. o. tanuló, Szilágyi Erzsébet
Gimnázium) írtam, Szántó Tamás az édesapám, akinek gépéről a leveleket
küldöm. Az ő gépe GenuineIntel 1.7 GHz, 256 MB RAM, WinXP és az ő futási
eredménye a régi script-tel alig több, mint 1 perc, míg az újabbal 8 (!)
másodperc.

Remélem, ezzel a verzióval még a fentinél is hosszabb szakaszú törteket is
gyorsan ki lehet számolni egy jobb teljesítményű géppel.

üdv:
Szántó Ádám


**************

<? function init_bit_set(&$a, $ln) {
if ($ln % 8==0) { $c=$ln; } else { $c=ceil($ln/8); }
$a=str_repeat(chr(0), $c); }

function set_bit(&$a, $bit) {
$place=floor($bit/8); $bit_in_byte=($bit % 8); // 0-7
$byte=decbin(ord(substr($a, $place, 1)));
if (strlen($byte)<8) $byte=str_repeat("0", 8-strlen($byte)).$byte;

$byte=substr($byte, 0, $bit_in_byte)."1".substr($byte, $bit_in_byte+1);
$a=substr($a, 0, $place).chr(bindec($byte)).substr($a, $place+1);
}

function get_bit(&$a, $bit) {
$place=floor($bit/8); $bit_in_byte=($bit % 8); // 0-7
$byte=decbin(ord(substr($a, $place, 1)));
if (strlen($byte)<8) $byte=str_repeat("0", 8-strlen($byte)).$byte;

return substr($byte, $bit_in_byte, 1); }

$t_f=file('osztas');

foreach ($t_f as $f) {

$a=substr($f, 0, strpos($f, '/'));
$b=substr($f, strpos($f, '/')+1);
$b=str_replace("\n", '', $b);

$k=''; $szamjegy=0; $szhatar=0;
init_bit_set($res, $b);

echo $a.":".$b. " osztas szakasza (ismetlodes eseten):\n";

do {

if ($b<=$k) {
echo floor($k/$b);
$k=$k % $b; $szhatar++; }
if (get_bit($res, $k)=="1") { break; } else { set_bit($res, $k); }
if ($szamjegy<strlen($a)) { $k.=substr($a,$szamjegy++,1); } else
{ $k*=10; }



} while ($k>0); //<

if ($k==0) { echo "\nNincs maradek!"; } else { echo "\nA szakasz hossza:
".$szhatar; }

echo "\n\n";

} ?>

**************






Archive powered by MHonArc 2.6.19+.

Top of Page