Another Noob MATLAB Question - For loop

  • Thread starter GreenPrint
  • Start date
  • #1
1,196
0

Homework Statement



Use the primes function to create a list of all the primes below 100. Now use a for loop to multiply adjacent values together. For example the first 4 primes numbers are

2 3 5 7

your calculation would be

2*3 3*5 5*7

which gives

6 15 35

Homework Equations





The Attempt at a Solution


Ok I spent a very long time trying to solve this problem. I eventually solved it with the following program.

PLEASE CHECK SECOND POST
i uploaded a easier version to read, i myself couldn't stand even looking at my program below so i took a snip of it in a easier to read form

z=0;
a=length(primes(100));
for b=primes(100);
if z>1;
y=y-1;
else
y=a;
end
b=primes(100);
c(y)=b(y).*b(y-1);
z=z+1;
end
d=find(c>0);
c(d)


which produces the following results, just the way I wanted them to

ans =

Columns 1 through 9

6 15 35 77 143 221 323 437 667

Columns 10 through 18

899 1147 1517 1763 2021 2491 3127 3599 4087

Columns 19 through 24

4757 5183 5767 6557 7387 8633

my only question and concern is why in my program must I include b=primes(100); after the end statement? I thought it was enough for me to just define it once and only once after the for command? I however noticed when I did so that b would get defined as 2 for some strange reason and that's it not what primes(100) is suppose to produce.

I was hoping someone could explain this to me. Thanks in advance!
 
Last edited:

Answers and Replies

  • #3
6
0
Hm.

You don't define b as a vector before the loop, you just run through it in the for loop, so b in the loop takes on a integer value, and not a vector.

Generally: don't use b as running variable in loop, while re-assigning it a value IN the loop. Bound for troubles.


Define b before the for loop, and use a running variable i=1:1:a in the for loop.

HTH
 
  • #4
uart
Science Advisor
2,776
9
Hi Greenprint, use "code" tags to preserve formatting in posts.

That's really bad use of a for loop as outlined by Laiva above. Set up your for loop limits before the loop, something like the following.


Code:
p=primes(100);
sp=max(size(p))-1;
for k=1:sp
   pp(k)=p(k)*p(k+1);
end
 
Last edited:
  • #5
1,196
0
thanks I think I better understand the loop commands now =)
 

Related Threads on Another Noob MATLAB Question - For loop

Replies
15
Views
6K
  • Last Post
Replies
2
Views
1K
  • Last Post
Replies
18
Views
10K
  • Last Post
Replies
7
Views
2K
  • Last Post
Replies
3
Views
21K
  • Last Post
Replies
8
Views
1K
  • Last Post
Replies
22
Views
5K
Replies
1
Views
3K
Replies
10
Views
11K
  • Last Post
Replies
0
Views
5K
Top