des nombres etonnant !!

Sujets variés concernant le développement en PureBasic
Invité

des nombres etonnant !!

Message par Invité »

invite = Dobro !!!

un pote (matheux) m'avais parle de nombre etonnant
(ça c'est moi qui les appel comme ça) qui ont une particularité

parmis vous je suis sur que quelqu'un saura m'en dire plus !!

ces nombres ont ceci de particulier

un exemple vaut mieux q'un long discours

1x1=1
5x5=25....2(5)
6x6=36....3(6)
25x25=625....6(25)
139455x139455=2027139455
ect...
des chifres qui multiplie par eux meme donne un nombre qui se fini par le
chifre en question !!
ben y en a pas tant que ça,je pense donc que ça doit etre une particuarité
connu des matheux , ça doit bien porter un nom cette affaire ??

voici un petit listing qui permet d'en sortir quelque uns !
Resultat = OpenConsole()

debut:
a.f=a.f+1
b.s=Str(a.f)
long=Len(b.s)
If Val(Right(Str(a.f*a.f),long))=a.f
Print(Str(a.f))
Print("x")
Print(Str(a.f))
Print("=")
Print(Str(a.f*a.f))
PrintN("")
EndIf
Goto debut


voila :DVERSION CORRIGé
:D
Dernière modification par Invité le mer. 07/avr./2004 22:17, modifié 2 fois.
Cinderella
Messages : 17
Inscription : mer. 21/janv./2004 23:20

Message par Cinderella »

Désolée mais je ne suis pas d'accord avec 139 455 au carré car tout nombre se terminant par 5 a son carré qui se termine par 25 !
Démonstration :
si le nombre se termine par 5, il peut s'écrire 10*a + 5 où a est un entier
son carré sera donc ( 10a + 5 ) ( 10a + 5 ) = 100 a( carré ) + 100a + 25
or 100a(carré) et 100a ne joue pas sur les deux derniers chiffres du nombre puisqu'ils sont multiples de 100 donc le nombre se termine par 25 !

Pourtant, cette curiosité que tu viens de donner paraît très intéressante, je ne l'avais jamais encore rencontrée. Je vais essayer de voir cela de plus près !
Merci de l'avoir postée !
Cinderella
Messages : 17
Inscription : mer. 21/janv./2004 23:20

Message par Cinderella »

Je viens de jeter un coup d'oeil au programme !
As-tu remarqué qu'il te donnait des résultats négatifs ?
J'vais pas faire un cours là-dessus, d'autres seraient beaucoup plus qualifié, mais le problème vient de la grandeur des nombres que tu obtiens. C'est plus difficile à gérer qu'il ne le paraît.
Bonne continuation, si tu te penches sur ce problème....
Invité

Message par Invité »

ben oui c'est a cause de pure basic et peut etre a windows !!

il limite les mot long et en flotant chez moi ça renvoie n'importe quoi !! :(

je connaissais le probleme !!! le fait est que l'algorithme de mon prg
est bon !! mais il faudrai un nouveau type de variables qui permetrai
d'afficher des grand nombre !! et la je sais pas faire !!

moi j'utilise ce q'uon me donne !!
:D
les Float .f 4 octets en mémoire illimité (voir informations plus bas)
d'apres la doc ( en principe !!)

j'avais demontrer en refaisant le test "hebdogiciel"
(qui consciste a elever 2 vingt fois au carre puis de faire le chemin inverse
racine carre 20 fois) que les flotants indiquaient n'importe quoi !!
a l'epoque j'avais un celeron 433 avec 98 se
maintenant j'ai un PiV 2.8 go avec xp pro
et ça deconne toujours
pourtant il parrai que chez certain ça marche !!

fred a l'epoque n'a pas du entendre ce problerme de variable flotante

je remet le test de l'epoque pour que vous me dites ce qu'il affiche
moi des la 5 eme valeur j'ai -2147483648 !!!!!! 8O

bref n'importe quoi ! :(

c'est peut etre la fonction Pow qui merdoie !!!
ha bah non! meme en faisant (a.f*a.f) ça va pas !!!!

le test :
; TEST HEBDOGICIEL
; qui consiste a elever 20 fois le chiffre 2 a la puissance 2
; puis au resultat obtenu, prendre 20 fois sa racine quarre
; la logique voudrait qu'on retrouve 2
; mais pour des raisons evidente de retenue ,on retrouve toujours
; une aproximation de 2
; c'est en voulant teste ceci que j'ai decouvert
; qu'au bout de la 5em elevation a la puissance 2
; pure basic n'affiche plus que des -2147483648 (chez moi)winxp celeron 433 ;( et pentium 4 a 2.8 go et xp pro !! carte mere differente !!
; alors qu'il est dit dans la doc
; que les flottants son illimité !! ????


Resultat = OpenConsole()
; on eleve 20 fois le chiffre 2 a la puissance 2
a.f=2
For t=1 To 20
b.f= Pow(a.f, 2)
a.f=b.f
PrintN(Str(a.f))
Next t

; on prend 20 fois la racine carre
;For t=1 To 20
; b.f=Sqr(a.f)
;a.f=b.f
;PrintN(Str(a.f))
;Next t

PrintN("resultat: "+Str(a.f))
Repeat
p$=Input():End
ForEver
FRED tant qu'on y est pourquoi ne peut t'on faire ?????????

For t.f=0 To 999999999
Next t.f
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Code : Tout sélectionner

a.f = 2
For n = 1 To 20
  a = Pow(a, 2)
  Debug a
Next
au bout de la 6ème itération, j'ai infini, ça ne risque pas de marcher.

et maintenant, regarde bien l'affichage obtenu avec la console et le debugguer

Code : Tout sélectionner

OpenConsole()
a.f = 2
For n = 1 To 20
  a = Pow(a, 2)
  PrintN(Str(a))
  Debug a
Next
Repeat
ForEver
c'est le str qui affiche n'importe quoi :roll: car il est limité au long, il faut utiliser strf()

Code : Tout sélectionner

OpenConsole()
a.f = 2
For n = 1 To 20
  a = Pow(a, 2)
  PrintN(StrF(a))
Next
Repeat
ForEver
et pour ta variable, il faut faire le test en 64 bits pour pouvoir monter jusqu'à 2^(2^20) et encore, j'ai des doutes

par contre, je trouve que les nombres saturent vite. ma calculette peut sortir des nombres plus grand.

j'ai fait le test suivant pour voir jusqu'ou on peut aller avec les floats et le résultat est décevant, c pas génial la précision au dela de 10^10 et le float sature à 10^38
ma calculette s'arrête à 10^99 avec une précision terrible car quand je fait la racine, c'est nicquel ce qui n'est pas le cas ici. (test fait sur un P4 de l'école) j'ai déjà une erreur pour pow(1000, 1/3)

Code : Tout sélectionner

For n = 1 To 50
  a.f = Pow(10, n)
  b.f = Pow(a, 1 / n)
  Debug "10^" + StrF(n, 10) + " = " + StrF(a, 10) + "  >>  " + StrF(b, 10)
Next
une calculette est plus précise qu'un ordinateur ???
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Invité

Message par Invité »

:D

a l'epoque , j'ai fais ce test sur TI99/4a
sur Mo5, sur apple ii e , sur oric atmos, sur amstrad cpc 464

bref sur des antiquités , et ont se prennaient pas le choux comme ça
:D ça MARCHAIS tres bien !!!

tous les "dinosaure" du basic comprendront !! :D :D :D


(Merci regis)
Répondre