Răspuns :
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;
}
#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;
}
Vă mulțumim că ați accesat site-ul nostru dedicat Informatică. Sperăm că informațiile furnizate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, nu ezitați să ne contactați. Vă așteptăm cu drag să reveniți și nu uitați să ne salvați la favorite!