MagicSquare1
MagicSquare1
1
We need to advance to a new cell by moving diagonally upward
How do we do it ?.
If both are voilated, it is a spacial case . It happens when currenly filled cell is (1,n). Then
else if
else if
end
end
end
2
clear all
% Fill in a odd magic squre from 1 to N^2
% In general numbers must form an Arithmetic %Progression
3
N=5; % N must be odd
A=zeros(N,N);
j=1+(N-1)/2 ; % fill centre cell in the first row
i=1; A(i,j)=1;
for K=2:N*N
i=i-1; j=j+1; % Advance towards right diagonal
% putback into the matrix if gone out
% We are using independent if statement
% First three 'if' can be in any order
if and(i<1, j==N+1) i=2; j=N; end
if and (j<=N , i<1) i=N; end
if and (i>0 , j>N) j=1; end
A = 5×5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
4
Create a Magic Square with your date of Birth.
5
Write a code for Generating Ramanujan's Magic square
A = 4×4
10 3 19 60
61 18 0 13
1 12 62 17
20 59 11 2
Columnsum=sum(A)
Columnsum = 1×4
92 92 92 92
rowsum =sum(A')
rowsum = 1×4
92 92 92 92
Diagsum=sum(diag(A))
Diagsum = 92
Antidiagsum=sum(diag(rot90(A)))
Antidiagsum = 92
sidewindowsumvertical = 92
sidewindowsumhoriz = 92
6
cornerdiagsummain = 92
cornerantidiagsum = 92
submatrix1 = 92
submatrix2 = 92
submatrix3 = 92
submatrix4 = 92
submatrix5 = 92
submatrix6 = 92
Cornersum = 92
Middlesquaresum = 92
7
% Any consecutive positive integer is okay
% Example. Generate integer numbers from 1 to 16
x=1:16;
A=reshape(x,4,4);
A=A';
temp=A(4,4);
A(4,4)=A(1,1);
A(1,1)=temp;
temp=A(2,2);
A(2,2)=A(3,3);
A(3,3)=temp;
temp=A(1,4);
A(1,4)=A(4,1);
A(4,1)=temp;
temp=A(2,3);
A(2,3)=A(3,2);
A(3,2)=temp;
A
A = 4×4
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
8
ans = 1×4
34 34 34 34
ans = 4×1
34
34
34
34
ans = 34
ans = 34
step
year=2000:2005;
n=length(year);
for i=1:n
if mod(year(i),400)==0
X = sprintf('year %d %s',year(i), 'is a leap year');
disp(X)
elseif mod(year(i),100)==0
X = sprintf('year %d %s',year(i),'is not a leap year');
disp(X)
elseif mod(year(i),4)==0
X = sprintf('year %d %s',year(i),'is a leap year');
disp(X)
else X = sprintf('year %d %s',year(i),'is not a leap year');
disp(X)
end
end
9
year 2000 is a leap year
year 2001 is not a leap year
year 2002 is not a leap year
year 2003 is not a leap year
year 2004 is a leap year
year 2005 is not a leap year
Find all numbers from 1 to 100 that are divisible by 3 or 5 but not both
X=[];
for i=1:100
if ( or( mod(i,3)==0, mod(i,5)==0) && not(mod(i,15)==0))
X=[X i];
end
end
disp(X)
3 5 6 9 10 12 18 20 21 24 25 27 33 35 36 39 40 42 48
Find sum of all numbers from 1 to 100 that are divisible by 3 or 5 but not both.
sum1=0;
for i=1:100
if ( or( mod(i,3)==0, mod(i,5)==0) && not(mod(i,15)==0))
sum1=sum1+i;
end
end
disp(sum1)
2103
% another method
sum2=sum(3:3:100)+sum(5:5:100)-2*sum(15:15:100)
sum2 = 2103
Add consecutive integer numbers between 1 to 100 till sum just exceeds 2550
x=2550;
sum=0;
for i=1:100
sum=sum+i;
if sum>x break; end
end
i, sum
i = 71
10
sum = 2556
Add consecutive odd numbers between 1 to 100 till sum just exceeds 1000
x=1000;
sum=0;
for i=1:2:100
sum=sum+i;
if sum>x break; end
end
i, sum
i = 63
sum = 1024
Using the prime numbers 2,3,5,7 in the range 1 to 10, find prime number from 11 to 100.
for n=11:100
if any(mod(n,[2 3 5 7])==0)
% do nothing
else
x=sprintf('%d is a prime',n);
disp(x)
end
end
11 is a prime
13 is a prime
17 is a prime
19 is a prime
23 is a prime
29 is a prime
31 is a prime
37 is a prime
41 is a prime
43 is a prime
47 is a prime
53 is a prime
59 is a prime
61 is a prime
67 is a prime
71 is a prime
73 is a prime
79 is a prime
83 is a prime
89 is a prime
97 is a prime
11
if(mod(n,2)==0) ;
% do nothing
elseif (mod(n,3)==0) ;
% do nothing
elseif (mod(n,5)==0) ;
% do nothing
elseif (mod(n,7)==0);
% do nothing
else
x=sprintf('%d is a prime',n);
disp(x)
end
end
11 is a prime
13 is a prime
17 is a prime
19 is a prime
23 is a prime
29 is a prime
31 is a prime
37 is a prime
41 is a prime
43 is a prime
47 is a prime
53 is a prime
59 is a prime
61 is a prime
67 is a prime
71 is a prime
73 is a prime
79 is a prime
83 is a prime
89 is a prime
97 is a prime
Using the prime numbers 2,3,5,7 in the range 1 to 10, find prime number from 11 to 1000.
X= [2 3 5 7];
% we need to consider prime up to sqrt(1000) for division
u=ceil(sqrt(1000)); % u=32. 32x32=1024
for n=11:1000
if any(mod(n,X)==0)
% do nothing
else
x=sprintf('%d is a prime',n);
disp(x)
if (n<=u)
X=[X n]; % append the new prime to the list if <=32
end
end
end
12
11 is a prime
13 is a prime
17 is a prime
19 is a prime
23 is a prime
29 is a prime
31 is a prime
37 is a prime
41 is a prime
43 is a prime
47 is a prime
53 is a prime
59 is a prime
61 is a prime
67 is a prime
71 is a prime
73 is a prime
79 is a prime
83 is a prime
89 is a prime
97 is a prime
101 is a prime
103 is a prime
107 is a prime
109 is a prime
113 is a prime
127 is a prime
131 is a prime
137 is a prime
139 is a prime
149 is a prime
151 is a prime
157 is a prime
163 is a prime
167 is a prime
173 is a prime
179 is a prime
181 is a prime
191 is a prime
193 is a prime
197 is a prime
199 is a prime
211 is a prime
223 is a prime
227 is a prime
229 is a prime
233 is a prime
239 is a prime
241 is a prime
251 is a prime
257 is a prime
263 is a prime
269 is a prime
271 is a prime
277 is a prime
281 is a prime
283 is a prime
293 is a prime
307 is a prime
311 is a prime
313 is a prime
317 is a prime
331 is a prime
337 is a prime
13
347 is a prime
349 is a prime
353 is a prime
359 is a prime
367 is a prime
373 is a prime
379 is a prime
383 is a prime
389 is a prime
397 is a prime
401 is a prime
409 is a prime
419 is a prime
421 is a prime
431 is a prime
433 is a prime
439 is a prime
443 is a prime
449 is a prime
457 is a prime
461 is a prime
463 is a prime
467 is a prime
479 is a prime
487 is a prime
491 is a prime
499 is a prime
503 is a prime
509 is a prime
521 is a prime
523 is a prime
541 is a prime
547 is a prime
557 is a prime
563 is a prime
569 is a prime
571 is a prime
577 is a prime
587 is a prime
593 is a prime
599 is a prime
601 is a prime
607 is a prime
613 is a prime
617 is a prime
619 is a prime
631 is a prime
641 is a prime
643 is a prime
647 is a prime
653 is a prime
659 is a prime
661 is a prime
673 is a prime
677 is a prime
683 is a prime
691 is a prime
701 is a prime
709 is a prime
719 is a prime
727 is a prime
733 is a prime
739 is a prime
743 is a prime
14
751 is a prime
757 is a prime
761 is a prime
769 is a prime
773 is a prime
787 is a prime
797 is a prime
809 is a prime
811 is a prime
821 is a prime
823 is a prime
827 is a prime
829 is a prime
839 is a prime
853 is a prime
857 is a prime
859 is a prime
863 is a prime
877 is a prime
881 is a prime
883 is a prime
887 is a prime
907 is a prime
911 is a prime
919 is a prime
929 is a prime
937 is a prime
941 is a prime
947 is a prime
953 is a prime
967 is a prime
971 is a prime
977 is a prime
983 is a prime
991 is a prime
997 is a prime
x=true;
n=10; % maximum value among the clock ringing interval time
while (x) % As long as x is true, loop
n=n+1;
if all(mod(n, [3 4 10])==0) x=false; end
end
X = sprintf('All the bell ring simultaneously at %d %s',n, 'th hour');
disp(X)
15
All the bell ring simultaneously at 60 th hour
Find the least integer number which when divided by 2 to 6, the remainder is 1 but eactly divisible 7.
The required number is k*60+1 that is divisible by 7. k is the least appropriate integer
x=true;
n=60;
div=[2,3,4,5,6];
while (x)
n=n+1;
if (all(mod(n,div)==1) && mod(n,7)==0) x=false;
end
end
n
n = 301
% another method
x=true;
k=1;
while (x)
n1=k*60+1;
k=k+1;
if (all(mod(n1,div)==1) && mod(n1,7)==0) x=false; end
end
n1
n1 = 301
16