Here's the question you clicked on:

55 members online
  • 0 replying
  • 0 viewing

xichen

  • 3 years ago

Hello, can someone help me with my code about Ps2 Diophantine equations? I am stuck at the problem 4. When I run my code, it just keeps going on and on and never gives me any output. I have to press ctrl+c to stop. Here is my code: http://bpaste.net/show/53890/ I cannot figure out what is wrong. Can somebody help me with my code? Thank you.

  • This Question is Closed
  1. snark
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 1

    the code is ok - try putting a print(a,b,c,n) before the break statement. the break only exits the bottom loop, for c, but continues for a and for b. test it with n in range(10), for example, and x=1, y=2, z=3. you may want to print solutions rather than bestSoFar, but play with it.

  2. rsmith6559
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    Your code is probably running just fine. The trouble is that with 4 nested loops, each going up to 200, you're doing somewhere in the area of 200**4 iterations. That takes a while, quite possibly hours, to run. This is something to keep in mind when your designing your algorithm.

  3. xichen
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    Thank you, guys. Yes, my code is, indeed, running fine. Can I ask whether there is a way of break out all nested loops? I can only think of using this 4 nested loops to solve this problem set. Is there any other efficient way? Some hints?

  4. snark
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 1

    try found = False for a in range(n): if found: break for b... if found: break for c..... if <condition> : do stuff found = True break

  5. snark
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 1

    you can make it somewhat more efficient: for a in range(n): if a*x > n: # adding more won't help break for b in range(n): if a*x + b*x > n: break for c....

  6. Not the answer you are looking for?
    Search for more explanations.

    • Attachments:

Ask your own question

Sign Up
Find more explanations on OpenStudy
Privacy Policy