The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
Google UNIX.COM


Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
python 2.4 on SCO 5.0.6 ananth_ak SCO 0 02-21-2008 04:01 AM
Foresight: python iBot Security Advisories (RSS) 0 02-12-2008 10:30 AM
what is python? kprescod4158 Shell Programming and Scripting 1 11-20-2007 05:58 PM
Python 2.5 must die. Dbecker UNIX for Dummies Questions & Answers 2 01-30-2007 09:35 AM
Python Help MAdSAcRAfICe UNIX for Dummies Questions & Answers 1 08-12-2002 12:20 AM

Reply
 
Submit Tools LinkBack Thread Tools Display Modes
  #1  
Old 04-12-2002
Registered User
 

Join Date: Oct 2001
Posts: 18
Post Python

I have written a small practice Python script to determine the prime numbers between 2-10, for practice. Although I have pored over this script numurous times, I have not found the problem.

The problem is: Python will not print "is a prime" when a number is a prime. After examining the code below, this will make sense..

Code:
for i in range(2,10):
	print
	print i,"-",
	for j in range(2,i):
		if (i % j) == 0:
			print j,
		else:
			if j == i + 1:
				print "is a Prime"
On execution, it prints this:

Code:
2 -
3 -
4 - 2
5 -
6 - 2 3
7 -
8 - 2 4
9 - 3
Note:I am using the Windows 98 IDLE GUI. I am not sure if this is affecting it..

I believe line 8 may be a problem. I am not sure whether to use "j - 1 == i" or j == i + 1".

Thank you,
Furtoes00

Last edited by Furtoes00; 04-13-2002 at 03:38 AM.
Reply With Quote
Forum Sponsor
  #2  
Old 04-14-2002
thehoghunter
Guest
 

Posts: n/a
First - I have no idea what Python is.
Second - that means I have no idea of it's syntax.

BUT -

As Spock would say "Logic suggest..."

This code you posted:

if (i % j) == 0:
print j,
else:
if j == i + 1:
print "is a Prime"


IF it prints j, you will never go to the else. Logic is logic -

if (true) then do this ELSE do this - you need to change this so it looks at each separately or looks at the second within the if

if (true) then
print j
if (true) then
print "is a Prime"
Reply With Quote
  #3  
Old 04-16-2002
Registered User
 

Join Date: Oct 2001
Posts: 18
That does make sense; here is the modified code:

Code:
for i in range(2,10):
	print
	print i,"-",
	for j in range(2,i):
		if (i % j) == 0:
			print j,
		if j == i + 1:
			print "is a Prime"
However, that does not work, either!!
Reply With Quote
  #4  
Old 04-16-2002
Perderabo's Avatar
Unix Daemon
 

Join Date: Aug 2001
Location: Washington DC Area
Posts: 8,609
I too do not know python. But it looks like you line "for j in range(2,i)" will vary j starting at 2 and going up to either i or i-1, I'm not sure which from this thread. But either way, it looks like your final test in the loop is to see if j equals i+1. How can that ever happen?

In any event, your problem isn't python, it's the algorithm. Your inner loop is finding factors. Before you enter that inner loop, set "nfactor=0". Each time you find a factor and do the "print j", also increment nfactor. After the inner loop finishes, test nfactor...if it's zero, "print prime".
Reply With Quote
  #5  
Old 04-27-2002
Registered User
 

Join Date: Oct 2001
Posts: 18
I tried that before; it didn't work. Neither

i++

nor

i += 1

nor

i = i + 1

works.
Reply With Quote
Google The UNIX and Linux Forums
Reply

Thread Tools
Display Modes




All times are GMT -7. The time now is 09:28 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008. All Rights Reserved.Ad Management by RedTyger Visit The Complex Event Processing Blog

Content Relevant URLs by vBSEO 3.2.0