« Back to profile of red_mercury

  • Python

    حدسية كولاتز 3ن+1

    حدسية كولاتز خاصة بالأعداد الصحيحة الطبيعية غير المعدومة، وهي عبارة عن متتالية كما يلي: 1. إذا كان العدد زوجيا، نقسمه على 2. 2. إذا كان العدد فرديا، نضربه في 3 ونضيف له 1. البرنامج يقوم بتطبيق العملية السابقة على العدد المدخل حتى الواحد ويقوم بحفظ مصفوفة لكل رقم حتى الواحد ويحفظها في ملف مثال على محتوى الملف [1000, 500, 250, 125, 376, 188, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1, 1] أو مثال أبسط [25, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 1]

    						#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Written by: red mercury
#3n+1.py
number_from_user = input('Enter number to prosess : ')
file_numbers = open('numbers.txt', 'w')

def  process_number(number = 1):
	matrix_number = []
	matrix_number.append(number)
	while True:
		if number == 1:
			matrix_number.append(number)
			break 
		elif number % 2.0 == 0:
			number = number / 2
			matrix_number.append(number)
		else:
			number = (number * 3) + 1
			matrix_number.append(number)
	return matrix_number

while number_from_user > 1:
	
	x = str(process_number(number_from_user))
	file_numbers.write(x + '\n') 
	number_from_user = number_from_user - 1

file_numbers.close()
print 'Done'

    			         
Add comment
To add a comment, please : Login or Sign up
    red_mercury
    red_mercury
  • New visitor?

    On setCode, you can save your codes, functions and classes, you can also share them with your friends, and track your favorite developer

    Join the SetCode community
  • Your language here :