Pascal输入一个正整数,求出它的所有素因子,每两个数之间用一个空格隔开
来源:学生作业帮助网 编辑:作业帮 时间:2024/09/18 20:14:02
⒈首先要知道一个定理:(a*b)modn=((amodn)*(bmodn))modn.这样就可以边乘变算,不论n多大都能不超时,否则还需要进行高精度运算代码:varn,i,m:longint;begi
programsample;vari,x,s,q:longint;begins:=0;q:=0;fori:=1to30dobeginread(x);inc(s,x);inc(q,sqr(x));end
这个其实可以用多种方法实现方法1:分离数字法varx,l,s:longint;beginread(x);whilex>0dobeginl:=xmod10;inc(s,l);x:=xdiv10;//当前
programyueshuhe;varn,i,s:longint;beginwriteln('inputn:');readln(n);s:=1;fori:=2tondobeginifnmodi=0th
只能告诉你算法,pascla不会定义一个变量sum,记录约数之和得到自然数a,定义变量i从1遍历到a,只要a/i==0,sum=sum+i,最后输出sum就是了
programfenjie;vart,k,n:longint;s,o:string;beginreadln(n);write(n,'=');fort:=2totrunc(sqrt(n))dobegin
varn,s:longint;beginread(n);s:=0;whilen0dobegins:=s+nmod10;n:=ndiv10;end;writeln(s);end.自创!
能够把题目描述得清楚一些,看不明白啊?或者加个输入输出的样列也好啊.如果你描述清楚,我直接给你源程序.
审题错了吧,求所有素因子意思就像因子分解。比如18=2×3×3你找素因子用的i那个for循环吧,按你的求法,一个因子只能在式子中出现一次。下一次循环i的值就增加了嘛。你可以按照这个思路来:输入k,wh
varst:string;s,i,l:longint;beginreadln(st);l:=length(st);fori:=1toldos:=s+ord(st[i])-48;ifsmod7=0the
输入一个正整数N(不超过一百位),如果N是偶数,则拆分N的各个数字相加求和;如果N是奇数,则拆分N的各个数字相乘求积.(如果是偶数则在输出时应加上“H=”,奇数则在输出时应加上“J=”)
varm,n,a,b,r:integer;beginreadln(a,b);m:=a;n:=b;r:=mmodn;whiler0dobeginm:=n;n:=r;r:=mmodn;end;writel
varn:longint;beginreadln(n);writeln(abs(n));{绝对值}writeln(sqr(n));{平方}writeln(sqrt(n));{平方根}writeln(p
vari,j,n:longint;z:boolean;beginreadln(n);writeln(2);fori:=3tondobeginz:=true;forj:=2toi-1doifimodj=
1.每次除完之后i要更新,你这里i的值就没变过2.每次输出后要把t赋值为0;3.ifnmodi=0thenbegint:=t+1;n:=ndivi;ifn=1thenwrite(i,'(',t,')'
主要有三个问题,一个是你的YUSHU函数应该用值参而不是用形参,就是说要把VAR去掉;还有就是你的循环体里A:=B是不对的,想一下,如果这样赋值,一进循环体,A,B就相等了,显然不对,应该定义一个中间
varn,k:integer;beginreadln(n);write(n,'=');whilenot(n=1)dobegink:=2;ifnmodk=0thenwrite(k)elsebegink:
vars,n,a:longint;begins:=0;whilea0dobeginn:=amod10;s:=s+n;a:=adiv10;end;writeln(s);end.
数字操作:varn,s:integer;beginreadln(n);s:=0;whilen>0dobegins:=s+nmod10;n:=ndiv10;end;writeln(s);end.字符串操
最大值与最后一个交换,需要使用到max和a[i],以及一个临时变量,你代码中使用的是maxa[0]a[i],这里貌似有点问题.最小值与第一个交换,貌似你也是用的这3个变量.如果觉得使用的变量过多,可以