Informatică, întrebare adresată de catalinmorar, 8 ani în urmă

Să se scrie un program C care afișează numerele naturale prime de patru cifre cu proprietatea că au suma cifrelor sau produsul cifrelor lor egal cu o valoare v citită de la tastatură.

Răspunsuri la întrebare

Răspuns de rossetta
1
Varinata 1) mai putin eficienta (mai lenta)

#include <stdio.h>

int main() {
    int v;
    scanf("%d", &v);
    for(int i = 1000; i <= 9999; i++){
      int ci = i, s = 0, p = 1;
      int d = 2;
      while(d <= ci && ci % d != 0)
        d++;
      if(ci == d) // este prim
      {
       while(ci > 0) {
           s = s + ci % 10;
           p = p * (ci % 10);
           ci = ci / 10;
       } 
       if(s == v || p == v)
         printf("%d ", i);
      }
       
    }
    return 0;
}


Varianta 2:


#include <stdio.h>
 
int main() {
    int v;
    scanf("%d", &v);
    for(int i = 1009; i <= 9973; i++){
      int ci = i, s = 0, p = 1;
      int d = 2;
      while(d * d <= ci && ci % d != 0)
        d++;
      if(d * d > ci) // este prim
      {
       while(ci > 0) {
           s = s + ci % 10;
           p = p * (ci % 10);
           ci = ci / 10;
       } 
       if(s == v || p == v)
         printf("%d ", i);
      }
       
    }
    return 0;
}




rossetta: Incearca sa copiezi programul inca o data. Eroarea poate sa apara de la faptul ca nu s-a copiat bine
catalinmorar: acelasi lucru
catalinmorar: hai ca-l scriu fara sa-i dau copy paste
catalinmorar: Daca vrei sa ma mai ajuti,mai am daca intri la profil intrebari.
catalinmorar: Gata,functioneaza perfect...Mersi mult!
rossetta: cu placere! :)
catalinmorar: Mai am pe profil,daca mai vrei sa ajuti:))
stassahul: Pai daca va cere in C, da voi faceti in C++, logic ca ii da eroare
rossetta: eroarea era din alt motiv
rossetta: pana la urma i-a mers asta inseamna ca voia in C++.... o sa o scriu si in C...
Alte întrebări interesante