what are all possibilities for a,b,c to be 72?
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Quinten Lodewijks
le 28 Mar 2017
Commenté : Quinten Lodewijks
le 29 Mar 2017
a = [0:1:20]; b = [0:1:20]; c = [0:1:20];
i want to know what all the possibilities are of the product of a*b*c to be 72
i tried with an if statement but this doesn't work.
7 commentaires
Tomas Hipolito
le 28 Mar 2017
You need to define a,b and c before the code. a, b and c vary from 0 to 20, right? In Matlab you define them as vectors as you did in your question. I didn't try the code, there is the possibility to have a syntax error. So it would be
a=[0:1:20];
b=[0:1:20];
c=[0:1:20];
and the rest of the code written above.
Tell me if it worked.
Réponse acceptée
Plus de réponses (1)
Jan
le 29 Mar 2017
Modifié(e) : Jan
le 29 Mar 2017
The allowed range is 1:20 for the 3 elements (ignoring the 0), not 1:72.
P = nchoosek(1:20, 3)
idx = prod(P, 2) == 72;
P(idx, :)
Or equivalently for Torsten's comment: for i = 1:20, ...
The loops can be stopped prematurely:
Result = [];
for i1 = 1:20
for i2 = 1:20
for i3 = 1:20,
p = i1 * i2 * i3;
if p == 72
Result(end+1, :) = [i1, i2, i3];
break; % Former products for larger i3 are > 72
elseif p > 72
break; % Former products for larger i3 are > 72 also
end
end
end
end
We know the prime factors of 72:
factor(72)
% 2 2 2 3 3
This means that we do not have to check values, which cannot be created by numbers, which cannot be build as a product of these values (and the 1):
Pool = [1, 2, 3, 4, 6, 8, 9, 12, 18];
Result = [];
for i1 = Pool
for i2 = Pool
for i3 = Pool
p = i1 * i2 * i3;
if p == 72
Result(end+1, :) = [i1, i2, i3];
break; % Former products for larger i3 are > 72
elseif p > 72
break; % Former products for larger i3 are > 72 also
end
end
end
end
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!