Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/48: Рейтинг темы: голосов - 48, средняя оценка - 4.58
136 / 2 / 6
Регистрация: 04.07.2015
Сообщений: 122
1

Найти все целые числа b, для которых а делится без остатка на b^2 и не делится без остатка на b^3

05.07.2015, 09:03. Показов 9399. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пользователь вводит любое целое число а. Необходимо вывести все целые числа b , для которых а делится без остатка на b*b и не делится без остатка на b*b*b. Как понимаю диапазон b надо самому задавать и решать через for
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2015, 09:03
Ответы с готовыми решениями:

Вывести все целые числа В, для которых А делится без остатка на В*В и не делится без остатка на В*В*В
Кто может решите пожалуйста задачу с помощью циклов. Задание 4: Пользователь вводит любое целое...

Вывести все целые числа, на которые заданное число делится без остатка
Кто может решите пожалуйста задачу с помощью циклов. Задание 6: Пользователь вводит целое число....

Необходимо вывести все целые числа В, для которых А делиться без остатка на В*В и не делиться без остатка на В*В*В
Пользователь вводит любое целое число А. Необходимо вывести все целые числа В, для которых А...

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

9
193 / 100 / 131
Регистрация: 23.06.2015
Сообщений: 249
05.07.2015, 11:09 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <math.h>
 
int Sqrt(long long x, long long *res)
{
    long double s = sqrtl((long double)x);
    long long l = (long long)(s + 0.5);
    if(l * l == x)
    {
        *res = l;
        return 1;
    }
    return 0;
}
 
int main()
{
    long long a, root, fi, se, i;
    scanf("%lld", &a);
    
    for(i = 1; i * i <= a; i++)
    {
        if(a % i == 0)
        {
            fi = i;
            se = a / fi;
            if(Sqrt(fi, &root))
            {
                if(a % (root * root * root) != 0) printf("%lld ", root);
            }
            if(Sqrt(se, &root))
            {
                if(a % (root * root * root) != 0) printf("%lld ", root);
            }
        }
    }
    
    return 0;
}
1
136 / 2 / 6
Регистрация: 04.07.2015
Сообщений: 122
05.07.2015, 12:34  [ТС] 3
А можно её как то упростить? Например ограничить число b от 1 до 100. И непонятна 4-ая строка кода. Для чего используем sqrt ведь это квадратный корень. И что такое *res? И s+ 0,5?


Добавлено через 4 минуты
Cuellius, уточнения по задачке
0
193 / 100 / 131
Регистрация: 23.06.2015
Сообщений: 249
05.07.2015, 15:24 4
Цитата Сообщение от Setb Посмотреть сообщение
А можно её как то упростить?
Какие ограничения на число a?

Цитата Сообщение от Setb Посмотреть сообщение
И что такое *res?
long long *res - указатель на переменную типа long long

Цитата Сообщение от Setb Посмотреть сообщение
И s+ 0,5?
В C нет функции округления действительного числа к ближайшему целому.
Но так можно округлить действительное число(s) к ближайшему целому числу(l).
C
1
long long l = (long long)(s + 0.5);
Цитата Сообщение от Setb Посмотреть сообщение
И непонятна 4-ая строка кода.
Объявление функции Sqrt, которая возвращает значение типа int и принимающее аргументы - переменную типа long long, и указатель на переменную типа long long.

int Sqrt(long long x, long long *res) - вернет 0 - если число x не является квадратом какого-либо числа, и 1 - если число x является квадратом какого-либо числа. В этом случае в res запишется квадратный корень из x.
0
136 / 2 / 6
Регистрация: 04.07.2015
Сообщений: 122
05.07.2015, 18:06  [ТС] 5
Просто мы не проходили ещё *res и почти не используем long. Может сделать переменную а типа inr? И убрать sqrt?
0
193 / 100 / 131
Регистрация: 23.06.2015
Сообщений: 249
05.07.2015, 19:18 6
Цитата Сообщение от Setb Посмотреть сообщение
И убрать sqrt?
Тогда пишите бинарный поиск корня.

Цитата Сообщение от Setb Посмотреть сообщение
Может сделать переменную а типа inr?
Это зависит от ограничений на a, если а <= 1000000, то можно все long long заменить на int. И тогда scanf("%lld", &a); надо будет заменить на scanf("%d", &a);

Цитата Сообщение от Setb Посмотреть сообщение
Просто мы не проходили ещё *res
Это я так написал функцию, типа 'возвращает 2 ответа' - является ли число x квадратом какого-либо числа и его квадратный корень, если является. Можно написать две функции, или переделать функцию, так чтобы она возвращала структуру.
0
136 / 2 / 6
Регистрация: 04.07.2015
Сообщений: 122
05.07.2015, 22:40  [ТС] 7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Пользователь вводит любое целое число а. Необходимо вывести все целые числа b, для которых а делится
// без остатка на b*b и не делится без остатка на b*b*b.
 
#include "StdAfx.h"
#include "locale.h"
#include "math.h"
#include "stdio.h"
#include "conio.h"
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "rus");
int a,b;
printf("Введите a: ");
scanf("%d", &a);
for (b = 1; b < 50; b++)
{
    if (a % (b*b) == 0)
    printf(" %d\n", b);
}
return 0;
}
Вот так у меня было начато, но она не работает
0
52 / 52 / 23
Регистрация: 01.06.2015
Сообщений: 189
06.07.2015, 02:30 8
Цитата Сообщение от Setb Посмотреть сообщение
А можно её как то упростить?
Может я что-то не так понял, но я это вижу так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main(){
 
    setlocale(LC_ALL, "rus");
 
    int a;
    printf("Введите a: ");
    scanf("%d", &a);
    for (int b = 1; b*b <= a; b++){
        if(a % (b*b) == 0 && a % (b*b*b) != 0) printf(" %d\n", b);
    }
    return 0;
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
06.07.2015, 02:40 9
Цитата Сообщение от Cuellius Посмотреть сообщение
В C нет функции округления действительного числа к ближайшему целому.
В ANSI C 99 есть такая функция.
0
136 / 2 / 6
Регистрация: 04.07.2015
Сообщений: 122
06.07.2015, 10:03  [ТС] 10
Так ваш код тоже не работает.

Добавлено через 56 минут
Получилось разобраться. Надо переменную b тоже объявлять вместе с а
0
06.07.2015, 10:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2015, 10:03
Помогаю со студенческими работами здесь

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

Найти количество натуральных четырехзначных чисел каждое из которых делится на 2 и на 3 без остатка
Найти количество натуральных четырехзначных чисел каждое из которых делится на 2 и на 3 без остатка

Найти и вывести количество элементов, целая часть которых не делится на 4 без остатка
Задача: две массив вещественных чисел. Найти и вывести количество элементов, целая часть которых не...

Вывести на экран все числа, на которые заданное число делится без остатка
Нужно написать программу с использованием процедуры, которая выводит на экран все числа, на которые...


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

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