First condition is true but in second you to have write if(mod(x,2)==1) then this will be show a prime number
How to make a program to check if a number is a prime?
42 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello I'm just starting with matlab and I have to make a program to check if a number is a prime. My pgrogramme looks like that but it ain't working.
function prime(x)
i= 3:2:sqrt(x) ;
if mod(x,2) == 0
disp ('is not a prime')
if mod(x,i) > 0
disp('is not a prime')
else
disp ('is a prime')
end
end
Can you help me make my code work please.
Respuestas (3)
Sean de Wolski
el 14 de Mayo de 2013
doc isprime
2 comentarios
Jan
el 14 de Mayo de 2013
@Marin: It is useful to mention such important details in the question already. Otherwise the forum users waste the time for mentioning the built-in functions.
Jan
el 14 de Mayo de 2013
Do you see the difference between:
if mod(x,2) == 0
disp ('is not a prime')
and
if mod(x,i) > 0
disp ('is not a prime')
In the first test you check, if the modulo returns 0. In the second, you want the result to be non-zero to decide, that x is not a prime. Suspicious.
Then the variable i is a vector. In consequence mod(x, i) replies a vector also. But the if-condition must be a scalar, as the English term "if" implies more or less. The functions all() and any() are useful in such cases.
You find a lot of useful links, when you search in the net for prime number algorithms. E.g. ask WikiPedia for Eratosthenes.
0 comentarios
Anmol singh
el 20 de En. de 2021
Prime number - a number can devide by itself or 1 so now we can iterate loop 2 to n/2 , if n is devide by any number from 2 to n/2 then it is not prime .
loop : i = 2 <= n/2
if mod(n/i == 0)
disp ('is not a prime');
return ;
end if
i++;
end loop
disp ('it is a prime');
return ;
It is very nice trick to check prime number till n/2 .Not need to iterate 2 to n-1
Refrence :
1 comentario
Walter Roberson
el 20 de En. de 2021
That is not MATLAB code. It is also not C or C++ code. I do not know what programming language it is. Certainly not java as might be hinted by the link to a java blog.
There is no need to iterate to n/2: you can stop iterating at floor(sqrt(n))
Ver también
Categorías
Más información sobre Install Products en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!