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

Οι αριθμοί

1193 -> 1931 -> 9311 -> 3119 

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

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

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

2 Likes

Μια πρόχειρη λύση όπου το πρόγραμμα βρίσκει τους πρώτους αριθμούς και χρησιμοποιεί την λίστα αυτή για να βρει τους πρώτους κυκλικούς αριθμούς που υπάρχουν σε αυτήν. Υλοποίηση σε 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 Likes