Προγραμματιστική πρόκληση Νο 8: Κυκλικοί πρώτοι αριθμοί

Οι αριθμοί

1193 -> 1931 -> 9311 -> 3119 

είναι όλοι πρώτοι αριθμοί και ανήκουν στην κατηγορία των κυκλικών πρώτων αριθμών. Το σύνολο των κυκλικών πρώτων είναι υποσύνολο των αντιμεταθετικών πρώτων. Σε αυτούς κάθε πιθανή διάταξη των στοιχείων τους είναι πρώτος.

Μπορείς να προσπαθήσεις να βρεις τέτοιους αριθμούς. Για να δεις αν ένας αριθμός είναι πρώτος μπορείς να το δεις με το κόσκινο του Ερατοσθένη, ή απλά να χρησιμοποιήσεις μια λίστα που θα κατεβάσεις από το internet.

Ένα ερώτημα που σκέφτηκα ακούγοντας για αυτούς τους αριθμούς, είναι πως δεν είναι κάποια βασική ιδιότητα του αριθμού μιας και εξαρτάται από την αριθμητική βάση. Υπάρχει άραγε ένας αριθμός που να έχει την ιδιότητα και στο δεκαδικό και στο δεκαεξαδικό σύστημα αρίθμησης.

2 «Μου αρέσει»

Μια πρόχειρη λύση όπου το πρόγραμμα βρίσκει τους πρώτους αριθμούς και χρησιμοποιεί την λίστα αυτή για να βρει τους πρώτους κυκλικούς αριθμούς που υπάρχουν σε αυτήν. Υλοποίηση σε Python (μπορεί να γίνει και πιο συμμαζεμένο) :

#!/usr/bin/env python

def prime(n):
	i=10
	result=[2,3,5,7]
	total=[]
	final_list=[]
	check=0

	while(i<=n):
		if i%2!=0:
			if i%3!=0:
				if i%5!=0:
					if i%7!=0:
						result.append(i)
		i+=1
	i=0

	for item in result:
		for i in range(len(result)-1):
			if result[i]<item:
				if item in result:
					if item%result[i]==0:
						result.remove(item)
					else:
						continue

	print("Oi prwtoi arithmoi mexri to",n,"einai : \n",result)
	
	for item in result:
		number=[]
		item_string=str(item)
		for x in range(len(str(item))):
			cyclic_string = item_string[x:]+item_string[:x]
			cyclic=int(cyclic_string)
			#print(cyclic)
			number.append(cyclic)
		total.append(number)

	for number in total:
		number.sort()
		if number not in final_list:
			final_list.append(number)
	print("Oi prwtoi kyklikoi arithmoi einai : ")	
	for number in final_list:
		for item in number:
			if item in result:
				check+=1
		if check==len(number):
			print(number)
			check=0
		else:
			check=0

n=int(input("Dwse mexri poion arithmo : "))	
prime(n)
3 «Μου αρέσει»