Pagini: 1 ... 3 4 [5] 6 7   În jos
  Imprimă  
Ajutor Subiect: 023 Numere Prime  (Citit de 77090 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
LowArmour
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #100 : Martie 10, 2009, 19:41:42 »

Multumesc. Am rezolvat.
Memorat
valentinrosca
Strain
*

Karma: -8
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« Răspunde #101 : Aprilie 02, 2009, 14:29:36 »

Aici merge __int64 Huh
Memorat
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #102 : Aprilie 02, 2009, 16:05:51 »

Nu. Foloseste long long in loc de __int64.
Memorat
valentinrosca
Strain
*

Karma: -8
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« Răspunde #103 : Aprilie 03, 2009, 19:09:59 »

Mi-am dat seama. Very Happy

Raspunsu este al k+1 numar prim la patrat.
I-mi iese 50 de puncte.
Nu-mi iese la numere mari.
Ma poate ajuta cineva la chestia asta.Va rog! [...]
Eu lucrez in C++.
[..]
Pls!
Va rog!
[...]

[editat de moderator] Nu mai posta consecutiv si fii sigur ca daca folosesti multe smiley-uri nu vei fi ajutat prompt!
« Ultima modificare: Aprilie 03, 2009, 19:15:15 de către Sima Cotizo » Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #104 : Aprilie 03, 2009, 19:15:47 »

Incearca sa faci debug sau fii mai exact cand spui ca nu-ti iese.
Memorat
vlad_oltean
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 25



Vezi Profilul
« Răspunde #105 : Aprilie 05, 2009, 21:42:22 »

ajutati-ma si pe mine, va rog frumos. am o problema foarte dubioasa. am facut problema, merge corect si pe testul cu 100.000, dar imi afiseaza gresit Fool
stiu sigur ca algoritmul e bun, pentru ca in debug imi apare valoarea corecta, dar in fisierul de iesire e o aberatie. mai precis, am codul urmator:

Cod:
#include <stdio.h>
#define N 1318700

bool prim[N];
long long x;
int count,k;

int main()
{
freopen("prim.in","r",stdin);
freopen("prim.out","w",stdout);

scanf("%d",&k);
[...]
for(...)
if(...)
{ x=i*i;
printf("%lld",x);
break;
}
}
fclose(stdin); fclose(stdout);
return 0;
}

exact asta fac. e foarte dubios, pentru ca daca dau 100000, in debug imi arata x ca fiind 1.689.274.677.841, iar in fisierul de iesire, in urma instructiunii printf("%lld",x) imi afiseaza 1.352.530.513. ce gresesc? Huh Huh
Memorat
c_e_manu
Nu mai tace
*****

Karma: 56
Deconectat Deconectat

Mesaje: 243



Vezi Profilul
« Răspunde #106 : Aprilie 05, 2009, 21:47:09 »

Folosesti cumva Borland? Eventual incearca si cu streamuri sau "%I64" (aici s-ar putea sa ma insel, ca nu am folosit niciodata Tongue) in loc de "%lld".
Memorat
gh09
Strain
*

Karma: -2
Deconectat Deconectat

Mesaje: 38



Vezi Profilul
« Răspunde #107 : Aprilie 05, 2009, 21:47:31 »

vine "%I64d". Dar totusi pe infoarena trimie cu "%lld" pt ca se testeaza pe linux!
Memorat
vlad_oltean
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 25



Vezi Profilul
« Răspunde #108 : Aprilie 05, 2009, 21:50:04 »

 Huh am luat suta cu fstream. as fi recunoscator daca mi-ar explica cineva de ce.
nu folosesc borland, folosesc mingw studio. din cate am inteles ar trebui sa se comporte la fel cu compilatorul de pe infoarena.

[Edit]
foarte foarte aiurea... cu "%I64d" ala iau doar 50..

[Later edit]
eu nu mai inteleg absolut nimic.. deci cu fstream e ok si la mine si pe site, dar mi-e mie incomod. cu stdio imi da mie bine daca folosesc "%I64d", dar da gresit pe site. daca folosesc "%lld", imi da gresit pe compilatorul meu, dar corect in evaluator. e aiurea rau de tot Fool
« Ultima modificare: Aprilie 05, 2009, 22:00:40 de către Vladimir Oltean » Memorat
c_e_manu
Nu mai tace
*****

Karma: 56
Deconectat Deconectat

Mesaje: 243



Vezi Profilul
« Răspunde #109 : Aprilie 05, 2009, 21:58:57 »

Pe MinGW e un mic bug despre care s-a mai vorbit pe infoarena la afisarea unui "long long" folosind printf(). Eu mai nou folosesc streamuri fiindca au devenit mai rapide. Doar in concursuri in care se folosesc compilatoare mai vechi folosesc printf() si scanf(). Plus ca imi e mai usor sa scriu un fout<<var decat printf("%d",var). Whistle
« Ultima modificare: Aprilie 05, 2009, 22:06:21 de către Emanuel Cinca » Memorat
vlad_oltean
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 25



Vezi Profilul
« Răspunde #110 : Aprilie 05, 2009, 22:02:41 »

fout>>var

 Rolling on the Floor Laughing Rolling on the Floor Laughing semnele nu se pun invers (<<) din cate stiu eu? Tongue e clar cat iti e de usor...
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #111 : Aprilie 05, 2009, 22:04:12 »

[Later edit]
eu nu mai inteleg absolut nimic.. deci cu fstream e ok si la mine si pe site, dar mi-e mie incomod. cu stdio imi da mie bine daca folosesc "%I64d", dar da gresit pe site. daca folosesc "%lld", imi da gresit pe compilatorul meu, dar corect in evaluator. e aiurea rau de tot Fool

Este o diferenta intre MinGW si g++ la afisarea numerelor long long. Pe g++ se foloseste %lld; pe MinGW, I64d. Cum pe infoarena se compileaza cu g++, iata de ce iei bine aici si gresit la tine cand afisezi cu lld.

Fstream se descurca la fel si pe MinGW si pe g++ si de-aia e ok in ambele parti.
Memorat
vlad_oltean
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 25



Vezi Profilul
« Răspunde #112 : Aprilie 05, 2009, 22:06:36 »

Este o diferenta intre MinGW si g++ la afisarea numerelor long long. Pe g++ se foloseste %lld; pe MinGW, I64d. Cum pe infoarena se compileaza cu g++, iata de ce iei bine aici si gresit la tine cand afisezi cu lld.

Fstream se descurca la fel si pe MinGW si pe g++ si de-aia e ok in ambele parti.

multumesc pentru clarificare Very Happy asta inseamna ca e cazul sa-mi schimb compilatorul cu unul mai asemanator cu g++?
« Ultima modificare: Aprilie 05, 2009, 22:40:53 de către Vladimir Oltean » Memorat
c_e_manu
Nu mai tace
*****

Karma: 56
Deconectat Deconectat

Mesaje: 243



Vezi Profilul
« Răspunde #113 : Aprilie 05, 2009, 22:06:50 »

fout>>var

 Rolling on the Floor Laughing Rolling on the Floor Laughing semnele nu se pun invers (<<) din cate stiu eu? Tongue e clar cat iti e de usor...

My bad  Tongue
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #114 : Aprilie 05, 2009, 22:21:27 »

multumesc pentru clarificare Very Happy asta inseamna ca e cazul sa-mi schimb compilatorul cu unul mai asemanator cu g++?
Nu neaparat. Daca ai in vedere diferenta asta, atunci poti sa folosesti MinGW in continuare (care e foarte asemanator cu g++ oricum). Poti sa incerci si Visual Studio Express care mi se pare ca afiseaza tot cu lld...
Memorat
valentinrosca
Strain
*

Karma: -8
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« Răspunde #115 : Aprilie 10, 2009, 10:37:03 »

Pai am facut un program de 90 pt si la ultmul test imi iese din timp
si nu stiu testul.Dar o sa rezolv chestia asta
Memorat
miculprogramator
Nu mai tace
*****

Karma: 65
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #116 : August 01, 2009, 12:17:41 »

Salut ! Am citit tot topicul si am gasit informatii folositoare legate de problema. Confused Am incercat sa fac intocmai: pun intr-un vector x toate numerele prime pana la 5.000.000 apoi afisez  (x[K+1]*x[K+1]). Numai ca imi da 1, am facut afisare anumerelor din vector si este buna. Cred ca problema mea ar fi la ciur pentru ca afisarea am facut-o astfel:

Cod:
 for(int i=2;i<=max;i++) 
if(x[i]==1) std::cout<<i<<' ';

Asa ca am incercat

Cod:
(x[K+1+2])*(x[K+1+2])
pentru ca eu incep i-ul de la 2. Insa tot nu merge.

Unde ar putea fi problema?  sad
Memorat
marcelcodrea
Nu mai tace
*****

Karma: 173
Deconectat Deconectat

Mesaje: 217



Vezi Profilul
« Răspunde #117 : August 01, 2009, 13:05:57 »

Din ce am inteles eu, tu in vectorul x ai ciurul si nu sirul de numere prime(ai si numere neprime acolo).
Tu prin (x[K+1]*x[K+1]) nu ridici la patrat al (K+1)-lea numar prim ci al (K+1)-lea numar.  Tu trebuie sa iterezi prin vectorul x si sa numeri cate de (x[it] == 1) ai (cate numere prime ai) cu o variabila aux, si doar cand aux pe care o numeri astfel, e egala cu k+1 trebuie sa afisezi x[it] * x[it] unde it e valoarea iteratorului.
Memorat
miculprogramator
Nu mai tace
*****

Karma: 65
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #118 : August 01, 2009, 19:11:31 »

Am descoperit ce greseam era la ciur ! Am reusit, mersi .  Smile

Edit: Am observat niste gresel in enuntul problemei:

Citat
Demonstreaza ca ideea lui Ghoerghe este doar o aproximare. Dandu-se un numar K, afla cel mai mic numar N care nu este divizibil cu primele K numele prime, dar nu este prim.

Nu-i o observatie rautacioasa, vreau doar sa atrag atenita asupra acestor greseli minore.  Smile
« Ultima modificare: August 01, 2009, 19:24:17 de către ALbulescu Cosmina » Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #119 : August 01, 2009, 21:04:09 »

Am rezolvat. Este bine ca semnalati astfel de erori!  Thumb up
Memorat

Am zis Mr. Green
vladtarniceru
De-al casei
***

Karma: 81
Deconectat Deconectat

Mesaje: 145



Vezi Profilul
« Răspunde #120 : Decembrie 11, 2009, 19:30:04 »

salut tuturor.as avea o problema in legatura cu problema Confused .la programul meu se blocheaza,am facut cu ciurul lui erastostene dar nu-mi merge(se blocheaza cand dau pe execute).ma poate ajuta cineva?va rog mult!!!uite sursa mea:
Cod:
#include<stdio.h>
 int a[10000],x[10000000],i,j,k,l=0,z,dk;
 int q=0;
 FILE *f,*g;
 int ciur(){
     for(i=1;i<=1000000;i++)
         a[i]=0;
     i=2;
     dk=k;
     while(i<=1000){
         if(a[i]==0)
             for(j=i+i;j<=1000000;j+=i)a[j]=1;
         i++;
     }
     j=1;
     for(i=1;dk>0;i++) if(a[i]==0) {dk--;x[j++]=i;}
 }
  int main(){
      f=freopen("prim.in","rt",stdin);
      g=freopen("prim.out","wt",stdout);
      printf("%d",k);
      ciur();
      q=2;
      while(l==0){
         z=1;
         while(a[q]==0) q++;
         while(q%x[z]==0 && z<=k) z++;
         l=(z==k);
         q++;
      }
      fprintf(g,"%d",q);
      fclose(g);
      return 0;
  }
daca isi da cineva seama unde e eroarea sa scrie pe forum sau pe id-ul meu vladtarniceru(sau sa mi-o trimita mail la [email protected]). peacefingers
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #121 : Decembrie 11, 2009, 22:32:41 »

Tu nu citesti k-ul (  printf("%d",k); ). a[] e prea mic declarat. Fa si tu un debug ( cu watch, sau cu afisari ). Nu cred ca e indicat sa postezi pe forum chiar orice problema. In curand o sa discutam aici erori de compilare. Nu cred ca asta e scopul infoarena. Spor!  Thumb up
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #122 : Ianuarie 21, 2010, 20:49:46 »

Deci nu pot sa cred de ce imi da la ciur aiurea: al 100.000-lea nr. prim zice ca e 1299709 Sad ce am putut gresi? Ciurul l-am facut in 2 moduri si tot asa
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #123 : Ianuarie 21, 2010, 21:54:43 »

Pai..ala e. Probabil n-ai folosit long long pentru rezultat.
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #124 : Ianuarie 22, 2010, 14:07:20 »

Cod:
#define MAX 1500000
bool v[MAX];
long long p[MAX]
Crezi ca e gresit ?
Memorat
Pagini: 1 ... 3 4 [5] 6 7   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines