回 帖 发 新 帖 刷新版面

主题:问题求解!急!!

我是个pascal初学者,现在对几道问题想得不是很明白,特来请教大家。谢谢

1.

给出一个正整数,求出他的因子,并用接下来的格式打印出来:15=3*5,20=2*2*5,28=2*2*7

2.

求最大质数子串
一个整数的整数子串是由该整数的连续数位的数字构成。
例:6158的子串包括6,1,5,8,61,15,58,615,158,6158
任务:找出最大的质数子串。若所有子串都是非质数,这输出"No primes"

3.

进制转换
实际一个通用程序,能实现10进制与2、8、16进制的互换,其中十进制与八、十六进制互换只要求在整数范围。
输入输出样例中D表示十进制数,B表示二进制数,O表示八进制数,H表示十六进制数,输入不必判错,并暗十进制数、二进制数、八进制数、十六进制数的顺序输出,输出的每个数间用空格分隔。
例:
输入:10D
输出:1010B 12O 0AH
输入:0DH
输出:13D 1011B 15O

回复列表 (共3个回复)

沙发

1和2题用穷举法!!!!!!!
第三低定义一栈就行了!!!!!!!!!!!!!

板凳

第一题:
program lt;
var n,s,i:integer;
begin
  write('N=');readln(n);
  if n=1 then write(n,'=1');
  s:=n;
  for i:=2 to n do
  begin
    repeat
      if s mod i=0 then begin s:=trunc(s/i);
         write(i);if s<>1 then write('*'); end;
    until (s mod i<>0);
  end;
  writeln;
end.

3 楼

十进制与二进制转换:
1(十位数转二位数):
var s,i,k:integer;
    a:array[1..100]of 0..1;
begin
repeat
  i:=i+1;
  a[i]:=s mod 2;
  s:=s div 2;
until s=0;
for k:=i down 1 do
  write(a[k]);
writeln;
end.
2(二位数转十位数):
var b:string;
    s,d,i,j:integer;
begin
write('b=');readln(b);
for i:=1 to length(b) do begin
  val(b[i],d,j);
  s:=s*2+d;
end;
writeln(s):
end.
(我想加分)想不出通用办法,见谅。。。[em18]

我来回复

您尚未登录,请登录后再回复。点此登录或注册