Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 37
1

не могу разобраться с циклом while

11.07.2015, 18:09. Показов 396. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Решаю задачку:
https://projecteuler.net/problem=3
ну и понятное дело не получается, делал ее на python:
Python
1
2
3
4
5
6
7
8
9
10
number = 600851475143 
n = 2
 
while number > n:
    if number % n == 0:
        number = number / n
        n = 2
    else:
        n = n + 1
print(n)
искомый ответ был получен
6857

попытался изобразить это на php. но как бы не совсем удачно

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php 
$a = 600851475143;
$b = 2;
while ($a > $b) {
    if ($a % $b == 0) {
        $a = $a / $b;
        $b = 2;
    } else {
        $b = $b + 1;
    }
}
echo "$a <br>";
?>
я так понял что проблема в условии if в итоге число все время делится только на 2, хотя условие четко указывает:
if ($a % $b == 0)

не могли бы подсказать, где ошибка в коде?
п.с. шутку про генетический код я уже слышал. смешно, но шутка сказанная дважды уже не такая смешная ))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.07.2015, 18:09
Ответы с готовыми решениями:

Не могу разобраться с циклом
&lt;?php session_start(); $name = $_POST; $id = $_POST; $foto = $_POST; $xar =...

Не могу разобраться с циклом
Перед вами код корзины для Интернет магазина,а если точнее ajax который туда все помещает но он...

Не могу разобраться с циклом
Все привет! Помогите разобраться с циклом... Вообщем проблема такая. Существует две таблицы rub...

Не могу разобраться с циклом
Немного не понимаю почему выходит ошибка &quot;Переменной Xmin присвоено значение, но оно ни разу не...

13
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
11.07.2015, 18:17 2
Цитата Сообщение от Dmitr1982 Посмотреть сообщение
не могли бы подсказать, где ошибка в коде?
вероятно в твоей версии интерпретатора int 32-разрядный, и данное число в int не помещается
0
59 / 59 / 46
Регистрация: 01.03.2015
Сообщений: 179
11.07.2015, 18:18 3
PHP
1
echo "$b <br>";
Выводит 6857.
0
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 37
11.07.2015, 18:22  [ТС] 4
SB5Ch, эм, а в чем проблема этой строки? разве что то не так?
0
59 / 59 / 46
Регистрация: 01.03.2015
Сообщений: 179
11.07.2015, 18:23 5
В коде на Python вы выводите n, а на PHP $a(number).
0
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 37
11.07.2015, 18:30  [ТС] 6
SB5Ch, так они вроде в итоге должны быть равными, проверил в python ну да, в заключительном действии они равны 6857/6857=1, так что вроде все ок все равно что выводить number или n

Добавлено через 3 минуты
буду смотреть в сторону Jewbacabra... хотя не до конца понимаю... в чем проблема может быть. да, число 600851475143 не убирается в значение Int 32 бит, правильно ли я понимаю, что эта проблема решается изменением строчки:
PHP
1
if ($a % $b == 0) {
на строчку
PHP
1
if ($a % $b === 0) {
0
59 / 59 / 46
Регистрация: 01.03.2015
Сообщений: 179
11.07.2015, 18:33 7
Jewbacabra правильно подсказал. Я проверил, у меня и $a и $b равны 6857.
Можете проверить здесь - http://www.tutorialspoint.com/... online.php
0
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 37
11.07.2015, 18:36  [ТС] 8
SB5Ch, проверили мой код?
аха, проверил по указанной ссылке... хм, бум разбираться
спасибо отвечающим
0
59 / 59 / 46
Регистрация: 01.03.2015
Сообщений: 179
11.07.2015, 18:37 9
Да. Выводит 6857.
0
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 37
11.07.2015, 19:20  [ТС] 10
ни как не вкурю, как же решить эту проблему, ок, число $a типа не int а float как я понимаю, но все равно не понимаю, почему не работает строка:

if ($a % $b == 0)

и действие заходит в этот блок, остаток от деления не равен 0 а действие в блоке выполняется ( need some help
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
11.07.2015, 19:29 11
Цитата Сообщение от Dmitr1982 Посмотреть сообщение
число $a типа не int а float
при вычислении остатка приведется к int
0
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 37
11.07.2015, 19:58  [ТС] 12
Jewbacabra,
пытаюсь:
if ((int)$a%$b == 0)
но результат тот же
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
11.07.2015, 20:04 13
Цитата Сообщение от Dmitr1982 Посмотреть сообщение
но результат тот же
а почему он должен быть другим???
PHP
1
var_dump((int)600851475143);
возможно fmod поможет.
0
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 37
11.07.2015, 20:10  [ТС] 14
Jewbacabra,
да, помогло, спасибо.
чувствую себя совсем идиотом, находил эту функцию, но не понял как она работает, да и сейчас то не понимаю, че.. пошел понимать. еще раз спс.
0
11.07.2015, 20:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2015, 20:10
Помогаю со студенческими работами здесь

Не могу разобраться с циклом
Ребята учу cамостоятельно пайтон. Хочу написать цикл, который срабатывает cразу, когда...

Не могу разобраться с циклом
Добрый день! Помогите разобраться с циклом Graph_Painter. По идее, по нажатию кнопки считываются...

не могу разобраться с циклом
Program Spisok; uses crt; type Tinf=string; List=^TList; TList=record ...

Не могу разобраться с циклом
Задача нахождения минимума функции методом наискорейшего спуска из 2х переменных вида:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru