how do i check if a number is a prime number, a square, and or a factor of 6?

22 views (last 30 days)
here is the current idea for the code so far
integer = 4;
if % ** check if integer is a prime **
Prime = integer % => If condition is met
elseif % ** check if the number is square **
Square = integer % => Else condition is met
elseif % chekc if divisible by 6
Walter Roberson
Walter Roberson on 5 Jan 2023
DGM on 5 Jan 2023
Edited: DGM on 5 Jan 2023
Since the core answers are all basically already on this page, I'll just add that logical indexing, implicit casting, and implicit expansion can make this tidy.
x = 100:999; % a set of numbers as a row vector
issquare = ~mod(sqrt(x),1); % implicit binarization
ismultiple = ~mod(x,[2; 3; 5]); % implicit expansion
validnums = issquare & ~any(ismultiple,1); % logical combination of masks
x(validnums) % logical indexing
ans = 1×7
121 169 289 361 529 841 961
Now you have to make a function out of it.

Sign in to comment.

Accepted Answer

Birdman on 1 Apr 2020
%check if number is prime
isprime(n) %returns logical value
%check if number is square
mod(numel(factor(n)),2)==0 %returns logical value
%check if number is divisible by 6
mod(n,6)==0 %returns logical value
Torsten on 15 Oct 2022
Edited: Torsten on 15 Oct 2022
2*3 = 6, and 6 is not a square.
Yes, the answer given is incorrect.
mod(numel(factor(a)),2)==0 is not sufficient for "a" to be a square.
Walter Roberson
Walter Roberson on 16 Oct 2022 shows a revised test (which I did not examine)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!