Полный квадрат числа питон

Найти все числа на отрезке от А до B, которые являются полными квадратами

Необходимо найти все числа на отрезке от А до B (А и B вводим) , которые являются полными квадратами. Если в заданном диапазоне таких чисел нет вывести -1.

Пример вводных данных и ответа :

Ввод : 1 30
Ответ : 1 4 9 16 25

Ввод : 10 50
Ответ : 16 25 36 49

Найти все трехзначные числа, которые являются полными квадратами и записываются тремя нечетными цифрами
Найти все трехзначные числа, которые являются полными квадратами и записываются тремя нечетными.

Найти все числа на отрезке от А до В являющиеся полными квадратами.
Найти все числа на отрезке от А до В являющиеся полными квадратами. например: ввод: 1 30.

Дан файл. Найти все компоненты, которые являются полными квадратами
Задание 2. Задан файл f компоненты которого являются целыми числами. Получите в файле g все.

Найти все числа, являющиеся полными квадратами, на заданном отрезке
Даны числа a и b. Необходимо найти все числа, являющиеся полными квадратами, на отрезке . Формат.

Найти количество чисел, которые не превосходят числа A и являются полными квадратами некоторого натурального числа
Найти количество чисел, которые не превосходят числа A и являются полными квадратами некоторого.

n, m = map( int, input('Введите 2 числа через пробел: ').split() ) res = [i for i in range(n, m+1) if i**0.5 == round(i**0.5)] print(res if res else -1)

Источник

Проверьте, является ли число полным квадратом

Как я мог проверить, является ли число полным квадратом?

Читайте также:  Все команды для javascript

Скорость не вызывает беспокойства, на данный момент, просто работая.

7 ответов

Проблема с тем, чтобы полагаться на любые вычисления с плавающей запятой ( math.sqrt(x) , или x**0.5 ) в том, что вы не можете быть уверены в их точности (для достаточно больших целых чисел x они не будут точными, и даже могут переполниться). К счастью (если не торопиться;-) существует множество чисто целочисленных подходов, таких как следующий.

def is_square(apositiveint): x = apositiveint // 2 seen = set([x]) while x * x != apositiveint: x = (x + (apositiveint // x)) // 2 if x in seen: return False seen.add(x) return True for i in range(110, 130): print i, is_square(i) 

Подсказка: он основан на «вавилонском алгоритме» для квадратного корня, смотрите википедию. Он работает для любого положительного числа, для которого у вас достаточно памяти для завершения вычислений;-).

Edit: давайте посмотрим пример.

x = 12345678987654321234567 ** 2 for i in range(x, x+2): print i, is_square(i) 

это печатает, как надо (и за разумное время тоже;-):

152415789666209426002111556165263283035677489 True 152415789666209426002111556165263283035677490 False 

Пожалуйста, прежде чем предлагать решения, основанные на промежуточных результатах с плавающей запятой, убедитесь, что они работают правильно на этом простом примере — это не так сложно (вам просто нужно несколько дополнительных проверок на случай, если вычисленный sqrt будет немного не таким), просто нужно немного внимательности.

А затем попробуйте с x**7 и найдите умный способ обойти проблему, которую вы получите,

OverflowError: long int too large to convert to float 

вам придется становиться все умнее и умнее по мере роста чисел, конечно.

Если бы я спешил, конечно, я бы использовал gmpy — но тогда, я явно предвзят;-).

>>> import gmpy >>> gmpy.is_square(x**7) 1 >>> gmpy.is_square(x**7 + 1) 0 

Да, я знаю, это настолько просто, что кажется жульничеством (немного похоже на то, как я отношусь к Python в целом;-) — никакой заумности, только идеальная прямота и простота (и, в случае с gmpy, чистая скорость;-)).

Читайте также:  Html js string to int

Источник

Проверьте, является ли число полным квадратом

Как я мог проверить, является ли число полным квадратом?

Скорость не вызывает беспокойства, на данный момент, просто работая.

7 ответов

Проблема с тем, чтобы полагаться на любые вычисления с плавающей запятой ( math.sqrt(x) , или x**0.5 ) в том, что вы не можете быть уверены в их точности (для достаточно больших целых чисел x они не будут точными, и даже могут переполниться). К счастью (если не торопиться;-) существует множество чисто целочисленных подходов, таких как следующий.

def is_square(apositiveint): x = apositiveint // 2 seen = set([x]) while x * x != apositiveint: x = (x + (apositiveint // x)) // 2 if x in seen: return False seen.add(x) return True for i in range(110, 130): print i, is_square(i) 

Подсказка: он основан на «вавилонском алгоритме» для квадратного корня, смотрите википедию. Он работает для любого положительного числа, для которого у вас достаточно памяти для завершения вычислений;-).

Edit: давайте посмотрим пример.

x = 12345678987654321234567 ** 2 for i in range(x, x+2): print i, is_square(i) 

это печатает, как надо (и за разумное время тоже;-):

152415789666209426002111556165263283035677489 True 152415789666209426002111556165263283035677490 False 

Пожалуйста, прежде чем предлагать решения, основанные на промежуточных результатах с плавающей запятой, убедитесь, что они работают правильно на этом простом примере — это не так сложно (вам просто нужно несколько дополнительных проверок на случай, если вычисленный sqrt будет немного не таким), просто нужно немного внимательности.

А затем попробуйте с x**7 и найдите умный способ обойти проблему, которую вы получите,

OverflowError: long int too large to convert to float 

вам придется становиться все умнее и умнее по мере роста чисел, конечно.

Если бы я спешил, конечно, я бы использовал gmpy — но тогда, я явно предвзят;-).

>>> import gmpy >>> gmpy.is_square(x**7) 1 >>> gmpy.is_square(x**7 + 1) 0 

Да, я знаю, это настолько просто, что кажется жульничеством (немного похоже на то, как я отношусь к Python в целом;-) — никакой заумности, только идеальная прямота и простота (и, в случае с gmpy, чистая скорость;-)).

Читайте также:  Http school znanika ru index php

Источник

Найти все числа на отрезке от А до B, которые являются полными квадратами

Необходимо найти все числа на отрезке от А до B (А и B вводим) , которые являются полными квадратами. Если в заданном диапазоне таких чисел нет вывести -1.

Пример вводных данных и ответа :

Ввод : 1 30
Ответ : 1 4 9 16 25

Ввод : 10 50
Ответ : 16 25 36 49

Найти все трехзначные числа, которые являются полными квадратами и записываются тремя нечетными цифрами
Найти все трехзначные числа, которые являются полными квадратами и записываются тремя нечетными.

Найти все числа на отрезке от А до В являющиеся полными квадратами.
Найти все числа на отрезке от А до В являющиеся полными квадратами. например: ввод: 1 30.

Дан файл. Найти все компоненты, которые являются полными квадратами
Задание 2. Задан файл f компоненты которого являются целыми числами. Получите в файле g все.

Найти все числа, являющиеся полными квадратами, на заданном отрезке
Даны числа a и b. Необходимо найти все числа, являющиеся полными квадратами, на отрезке . Формат.

Найти количество чисел, которые не превосходят числа A и являются полными квадратами некоторого натурального числа
Найти количество чисел, которые не превосходят числа A и являются полными квадратами некоторого.

Источник

Оцените статью