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 ales să vizitați platforma noastră dedicată Informatică. Ne bucurăm dacă informațiile oferite v-au fost de ajutor. Pentru orice întrebare sau clarificare suplimentară, echipa noastră vă stă la dispoziție. Revenirea dumneavoastră ne onorează – nu uitați să ne salvați în lista de favorite!