How can I improve my Fortran program to factor numbers?

  • Context: Fortran 
  • Thread starter Thread starter Jeepster
  • Start date Start date
  • Tags Tags
    Factoring Fortran
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
5 replies · 4K views
Jeepster
Messages
4
Reaction score
0
Got to write a program that factors a given number(>1)

Here is what I have:

program Factors
implicit none
real::n, i

print*, "enter a number:"
read*, n

i=2
do while (n>1)
if (mod(n, i)==0) then
i=i+1
n=n/i
else
write (*,*) ' X= ', X
end if
end do


end program

It works great but let's say you put in 600, it will give

2
2
2
3
5
5

which is right but the teacher wants it to say:

2**3*3*5**2

I don't have a clue how to make it do that.

Thanks for any help. :)
 
Physics news on Phys.org
You'll need an inner loop that counts how many times a given factor is used, storing that in another variable. If it's used once write it with a "*", otherwise write it with a "**", the exponent, then another "*".
 
ok. I put this together but I am getting an error


program Factors
implicit none
real::n, i, x
integer::f, c=20

print*, "enter a positive integer:"
read*, n


i=2
do while (n>1)
if (mod(n, i)==0) then
i=i+1
n=n/i
else


write(*, 100) i, "**", c
100 format(I2, A2, I2, $)
end if
end do


end program
 
I know I just signed up but this thing is due in a few hours.

Any help is much appreciated.
 
well what's the error?
 
It says there is an error in the (I2, A2, I2, $). It has an arrow pointing to the first I2.