Страница 1 из 1
Дано целое число (вводит пользователь), определить сумму его цифр, являющихся простым
Добавлено: 23 июн 2008, 11:28
Azura
Дано целое число (вводит пользователь), определить сумму его цифр, являющихся простыми числами.
Помогите, пожалуйста, решить задачку! Очень нужно! Желательно на Pascal и C++.
Re: Дано целое число (вводит пользователь), определить сумму его цифр, являющихся пр
Добавлено: 23 июн 2008, 12:00
BBB
Простяе числа, меньшие 10 (т.е. те, которые являются цифрами) - это 2,3,5,7.
Либо:
1) брать остаток числа от деления на 10 (N mod 10), смотреть на принадлежность к [2,3,5,7], если принадлежить, то суммировать. Затем цисло делить целочисленно на 10 (N div 10) и, если результат больше 0, то читать сие предложение с начала.
Либо:
2) преобразовать число к строке (ф-я Str), затем перебирать по порядку символы строки, смотреть их принадлежность к ['2','3','5','7']. Если да, то преобразовать символ обратно в числи и суммировать.
Re: Дано целое число (вводит пользователь), определить сумму его цифр, являющихся пр
Добавлено: 23 июн 2008, 12:28
Azura
BBB писал(а):Простяе числа, меньшие 10 (т.е. те, которые являются цифрами) - это 2,3,5,7.
Либо:
1) брать остаток числа от деления на 10 (N mod 10), смотреть на принадлежность к [2,3,5,7], если принадлежить, то суммировать. Затем цисло делить целочисленно на 10 (N div 10) и, если результат больше 0, то читать сие предложение с начала.
Либо:
2) преобразовать число к строке (ф-я Str), затем перебирать по порядку символы строки, смотреть их принадлежность к ['2','3','5','7']. Если да, то преобразовать символ обратно в числи и суммировать.
Спасибо большое, но не могли бы вы написать это в виде программы? Или исправить эту:
Код: Выделить всё
program prosto_chisla;
uses crt;
var n,i,symma,k,x:integer;
p,pdel: Integer;
numb: integer;
Function Prost (k:integer): boolean;
Begin
Prost:=true;
for i:=2 to x div 2 do
if x mod i=0 then
begin Prost:=false;
end;
End;
Begin
clrscr;
symma:=0;
pdel:=0;
Write('‚ўҐ¤ЁвҐ зЁб«® n: ');
Readln(numb);
{Val(numb, p, Code);
if Code<>0 then Writeln('‚ўҐ¤Ґ*® *ҐўҐа*®Ґ зЁб«®: ',Code) Else Writeln('Ok!');
until Code = 0;}
k:=0;
while numb>0 do
begin
i:=numb mod 10;
numb:=numb div 10;
end;
for i:=2 to (n-1) do begin
if n mod i = 0 then pdel:=pdel+1;
end;
if pdel=1 then symma:=symma+i;
if pdel=1 then Write(i,' ');
pdel:=0;
Writeln;
Writeln(symma);
readln;
{write('‡**®ў®(y/n)? ');
Readln(yn);
until yn='n';}
end.
Re: Дано целое число (вводит пользователь), определить сумму его цифр, являющихся пр
Добавлено: 23 июн 2008, 13:48
BHy4ok
Вводимое число сделал типа "String", я думаю не будут предираться. Если же все таки будут вопросы, то либо сделай защиту от дурака на ввод чисел или-же просто как было предложено выше ставь тип "integer" и затем просто переводи его в строку. (str(x,s));
[syntax='Pascal']
uses
Crt;
var
i,j,k,p:integer;
n:string;
ch:set of char=['2','3','5','7']; // Простые числа
begin
ClrScr;
k:=0;
write('Vvedite chislo-> ');
readln(n);
for I := 1 to length(n) do
if n in ch then // Ищем простое число
begin
val(n,p,j); // Если число найдено, то переводим его в тип "integer"
k:=k+p; // Суммируем найденное число с уже имеющейся суммой предыдущих чисел.
end;
writeln;
writeln('summa prostih chisel = ',k); // Выводим сумму всех простых чисел на экран
readln;
end.
[/syntax]
Re: Дано целое число (вводит пользователь), определить сумму его цифр, являющихся пр
Добавлено: 23 июн 2008, 13:56
somewhere
Зачем здесь массив А?
Или исправить эту.
Добавлено: 23 июн 2008, 14:02
BBB
Azura писал(а):Или исправить эту:
Код: Выделить всё
program prosto_chisla;
uses crt;
var n,i,symma,k,x:integer;
p,pdel: Integer;
numb: longint;
Begin
clrscr;
symma:=0;
Write('‚ўҐ¤ЁвҐ зЁб«® n: ');
Readln(numb);
while numb>0 do
begin
i:=numb mod 10;
numb:=numb div 10;
if (i in [2, 3, 5 ,7]) then symma:=symma+i;
end;
Writeln;
Writeln(symma);
readln;
end.
Re: Дано целое число (вводит пользователь), определить сумму его цифр, являющихся пр
Добавлено: 23 июн 2008, 14:14
BHy4ok
somewhere писал(а):Зачем здесь массив А?
Нету там массива "а", я его раньше убрал чем ты обновил страницу

(Время обновления не смотри, были добавлены комментарии)
Re: Дано целое число (вводит пользователь), определить сумму его цифр, являющихся пр
Добавлено: 23 июн 2008, 15:44
BBB
BHy4ok,
все-таки,
for I := 1 to length(n) do
а не
for I := 0 to length(n) do
И k предварительно обнулить.
Re: Дано целое число (вводит пользователь), определить сумму его цифр, являющихся пр
Добавлено: 23 июн 2008, 15:48
BHy4ok
BBB писал(а):BHy4ok,
все-таки,
for I := 1 to length(n) do
а не
for I := 0 to length(n) do
И k предварительно обнулить.
Исправил.
Консольное приложение в делфе автовставками начинает его с нуля, иногда забываю исправлять.
Re: Дано целое число (вводит пользователь), определить сумму его цифр, являющихся пр
Добавлено: 23 июн 2008, 17:15
Хыиуду
BHy4ok писал(а):
[syntax='Pascal']
if n in ch then // Ищем простое число
begin
val(n,p,j); // Если число найдено, то переводим его в тип "integer"
k:=k+p; // Суммируем найденное число с уже имеющейся суммой предыдущих чисел.
end;
[/syntax]
Это вполне заменяется на
if n in ch then k:=k+ord(n)-ord('0');