Сегодня было занятие с группой из губернского лицея №3 г.Пензы.
Сделали пару задач, начали делать третью -- и забарахлила связь, Скайп у меня падал раза три...
Очень жаль.
Задания, которые я подобрал для группы из лицея №3 (учитель -- Евгений Юрьевич Смолькин, "ветеран" нашего проекта), я выкладываю в блог. Собственно, я не рассчитывал, что мы решим все -- большинство как раз и предназначалось для домашней работы.
Очень хотелось бы увидеть здесь варианты решений именно от мальчиков-девочек из Пензенского лицея -- регистрируйтесь и оставляйте решения.
Завтра занятия с Салаватом -- по расписанию.
Задание №1
Числа Софи Жермен – два
числа, для которых выполняется правило: "Если х – простое, то и 2х+1
– тоже простое".
Напиши класс, который
принимает с клавиатуры целое число и проверяет, относится ли оно к числам Софи
Жермен.
Задание №2
Бесквадратным называется
число, которое не является квадратом ни одного из своих делителей.
Напиши класс, который
принимает с клавиатуры целое число и проверяет, является ли оно бесквадратным.
Задание №3
Избыточным называется число N, сумма положительных собственных делителей (отличных от N) которого
превышает N.
Число 48 – избыточное,
поскольку 1+2+3+4+6+8+12+16+24=76>46.
Напиши класс, который
принимает с клавиатуры целое число и определяет, является ли оно избыточным.
Задание №4
Недостаточным называется
число N, сумма
положительных собственных делителей (отличных от N) которого меньше N.
Число 15 – недостаточное,
поскольку 1+3+5=9<15.
Напиши класс, который
принимает с клавиатуры целое число и определяет, является ли оно недостаточным.
Задание №5
Слегка недостаточным
называется число N, сумма
положительных собственных делителей (отличных от N) которого меньше N ровно на 1.
Число 16 – недостаточное,
поскольку 1+2+4+8=15.
Напиши класс, который
принимает с клавиатуры целое число и определяет, является ли оно слегка
недостаточным.
Задание №6
Напиши класс, который выводит
на экран все двузначные целые числа, у которых есть только два делителя (не
считая 1 и самого числа).
Задание №7
«Перевернуть и сложить» (англ. Reverse-Then-Add) — название операции,
выполняемой над числом. Суть заключается в сложении исходного десятичного числа
с его перевёрнутой копией (числом, записанным с конца). Например, 56 + 65 =
121, 125 + 521 = 646.
Напиши класс, который выводит
на экран двузначные числа, для которых в результате операции "перевернуть
и сложить" образуется трехзначное симметричное число (палиндром).
Задание №8
Рассмотрим процедуру, которую
назовём "цифросложением". Выберем любое целое число и прибавим к
нему сумму его цифр. Например, если мы выберем число 47, то сумма его цифр
4 + 7 = 11 и 47 + 11 = 58. Новое число
58 называется "порождённым" числом, а исходное число 47 —
его "генератором". Процесс можно повторять неограниченно.
Напиши класс, который
принимает с клавиатуры целое число и, используя его в качестве первичного
"генератора", выводит на экран последовательность из 10 чисел,
образуемых "цифросложением".

задание 1.
ОтветитьУдалитьimport java.util.*;
class n1
{
static Scanner reader=new Scanner(System.in);
public static void main(String[] args)
{
int a,b,i;
a=reader.nextInt();
if(a==2) System.out.print("да");
else
if(a==3) System.out.print("да");
else
{
b=2*a+1;
i=0;
if((a%2!=0)&&(a%3!=0)&&(a%5!=0)&&(a%7!=0)) i=i+1;
if((b%2!=0)&&(b%3!=0)&&(b%5!=0)&&(b%7!=0)) i=i+1;
if(i==2)
System.out.print("да");
else
System.out.print("нет");
}
}
}
Задание 2.
import java.util.*;
class n2
{
static Scanner reader=new Scanner(System.in);
public static void main(String[] args)
{
int a,b,i,i1;
a=reader.nextInt();
i1=0;
b=1;
for(i=1;i<=a/2;i++)
{
b=i;
if(a%b==0) if(b*b==a) i1=i1+1;
}
if(i1==0) System.out.println("бесквадратное");
else System.out.println("не бесквадратное");
}
}
Задания 3,4,5 очень похожи поэтому я объеденил их в одну программу.
import java.util.*;
class n345
{
static Scanner reader=new Scanner(System.in);
public static void main(String[] args)
{
int a,s,i ;
s=0;
a=reader.nextInt();
for(i=1;ia)
System.out.println("избыточное");
else
if(s+1==a) System.out.println(" слегка недостаточное");
else System.out.println("недостаточное");
}
}
Задание 6.
import java.util.*;
class n6
{
static Scanner reader=new Scanner(System.in);
public static void main(String[] args)
{
int a,i,s;
s=0;
for(a=10;a<100;a++)
{
s=0;
for(i=2;i<=a/2;i++)
{
if(a%i==0) s++;
}
if(s==2) System.out.println(a);
}
}
}
Задание 7.
import java.util.*;
class n7
{
static Scanner reader=new Scanner(System.in);
public static void main(String[] args)
{
int a,b,a1,a2,c,c1,c2,c3;
for(a=10;a<60;a++)
{
a1=a/10;
a2=a%10;
b=a2*10+a1;
c=a+b;
c1=c/100;
c2=c/10%10;
c3=c%10;
if(c1==c3) System.out.println(a);
}
}
}
Задание 8.
import java.util.*;
class n8
{
static Scanner reader=new Scanner(System.in);
public static void main(String[] args)
{
int a,a1,a2,a3,a4,a5,b,i;
a=reader.nextInt();
i=0;
while(i<10)
{
a1=a/10000;
a2=a/1000%10;
a3=a/100%10;
a4=a/10%10;
a5=a%10;
b=a+a1+a2+a3+a4+a5;
System.out.println(b);
a=b;
i=i+1;
}
}
}
Задача №1: я ее решал совсем по-другому))) Когда увидел твое решение -- сильно засомневался. Прогнал ее на числах Софи Жермен (http://oeis.org/A005384) -- все работает. Браво!
ОтветитьУдалитьЗадача №2: совершенно правильное решение -- но вот на такой задаче удобно объяснять, что такое булев тип переменных. Найдешь сам в теории (есть в нашем посбии тоже) и напишешь вариант с логической переменной?
Я очень рад, что ты углядел сходства и сделал одну универсальную задачу, молодец!
Задача №7: а ты предусмотрел в решение варианты того, что перевернутые числа могут не оказаться двузначными (10, 20...) и что сумма чисел может не оказаться трехзначным? Я умышленно не рассказываю, проверял ли я задачу на эти варианты или нет)))
Задача №8: прямо вот так в лоб ты предполагаешь, что в числе 5 цифр? Почему именно пять? Очень интересно узнать твоем мнение, прежде чем я выскажу свое)))
Задача №7: числа которые заканчиваются на 0 это определенная проблема так как я слабо представляю как они должны выглядеть в перевернутом виде, поэтому я не стал рассматривать их отдельно и перевернутой копией числа 20 например будет 2, не можем же мы использовать число 02.А то что сумма может оказаться не трехзначным, то есть двузначным числом не очень страшно так как тогда первая цифра определится как 0 и ошибочный вывод числа может быть только в случае если последняя цифра тоже 0, а последней цифрой 0 может быть либо когда оба числа заканчиваются на 0(что в нашем случае невозможно) либо когда сумма единиц получается 10, но пар чисел которые подходят по этому условию не так много и они все в сумме дают число 110.Так что на мой взгляд с этим проблем не должно быть.
ОтветитьУдалитьЗадача №8: честно говоря уже и не помню почему именно 5 цифр, наверно дело в том, что в задаче это никак не оговорено и работаем мы в основном с двух или трехзначными числами и я решил что 5 цифр нам хватит, хотя после того как вы спросили понял, что логичнее было бы сделать программу для 10 цифр, так как в 10 цифр попадет любое число типа int.
Задачу 2 переделаю.
Хорошие рассуждения, вполне убедительные.
ОтветитьУдалитьОбщая проблема в них в том, что ты исходишь из соображений "для вот такого и вот такого случая решение дает неприятный частный случай, но он все равно не мешает". Основная идея же заключается в том, чтобы написать общее решение с общим же учетом "опасных" вариантов.
Поэтому интересно было бы изменить решения так, чтобы решения были как можно более общими.
Что же касается твоей идеи про "10 цифр" -- запомни наш разговор, мы к нему вернемся в будущем, месяца так через полтора-два, когда займемся еще одним видом циклов. Во тогда мы и поговорим про (снова!) общее решение.
А так -- решения безусловно интересные.
Стало интересно, решил 8 задачу через цикл while
ОтветитьУдалитьimport java.util.*;
class addnum
{
static Scanner reader=new Scanner(System.in);
public static void main(String[] args)
{
int a,b,s,i;
a=reader.nextInt();
for (i=1; i<=10; i++)
{
s=0;
b=a;
while (b!=0)
{
s+=(b%10);
b=b/10;
}
a+=s;
System.out.print(a+" ");
}
}
}
Прекрасно -- это совершенно точное решение!
ОтветитьУдалитьНе знаю, читал ли статью в Википедии об этих числах (самопорожденные) -- если не читал, вот сслыка: http://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D0%BC%D0%BE%D0%BF%D0%BE%D1%80%D0%BE%D0%B6%D0%B4%D1%91%D0%BD%D0%BD%D1%8B%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%B0
Если вдруг будут проблемы со ссылкой на русском, вот английский: http://en.wikipedia.org/wiki/Self_number
ОтветитьУдалитьа там уж можно переключиться на русский
Serg, в твоем решении class n345 блог, судя по всему, "сожрал" какие-то знаки в заголовке цикла (видимо, там у тебя было for(i=1;i<a)?), а также явно "сожрал" само тело цикла.
ОтветитьУдалитьПришли мне, пожалуйста, текс класс просто на почту -- если блог опять не даст поставить его нормально.
Глюки?..