首页| 论坛| 消息
主题:算法初步
回帖:编程入门题(二)
1、求素数:求2至N(2≤N≤500)之间的素数。例如:
输入:N=100
输出:2 3 5 71113
1719 23293137
4143 47535961
7173 79838997
total=24 {表示2至100之间的素数有24个}
[解法一]素数是指除1及本身以外不能被其他数整除的自然数。下面介绍用穷举法求素数。
1. 2是素数;t=0;
2. I=2~n,则:
(1)如果i是素数,则其必须是奇数且不能被2~√i中的任一个数整除。
(2)如果I是素数,则输出该素数且计数器t=t+1;
3.输出2~N之间素数的总数:total=t;
4.程序结束
[程序]
program exa;
uses crt;
vari,k,n,w,t:integer;
yes:boolean;
Begin t:=0;clrscr;write(‘N=’);readln(n);
if (n500) then
begin writeln(‘input error!’);halt;end;
write(2:5);t:=1;
for i:=2 to n do
if odd(i) then
begin yes:=true;
w:=trunc(sqrt(I));k:=2;
while (k0 do
begin P:=R;{数组P保存在P中}
write(R[1]:5);{输出素数} t:=t+1;w:=R[1];j:=0;
for i:=1 to k do
if P mod w0 then{划去w及 W的倍数}
begin j:=j+1; R:=P;end;{重新构造集合R}
k:=j; {新建后R的元素个数}
end;writeln;writeln('Total=',t);
end.
(f2);
end.

 

--------------------------------------------------------------------------------

2、矩阵相乘:已知N×M1矩阵A和M1×M矩阵B(1≤M、M1、N≤10),求矩阵C(=A×B)。例如:
输入:N,M1,M=434
A= 1 2 3
3 4 5 提示:所谓矩阵相乘(如A×B=C),是指
4 5 6 Cij= ∑(Aik×Bkj)(i=1~N,j=1~M1,k=1~M)
5 –1–2
B= 1 6 4 2 例如:
2 3 4 1 C11=A11×B11+A12×B21+A13×B31
–1 5 7 –3 =1×1+2×2+3×(– 1)
输出:C= 2 27 33 –5 =2
6 55 63 –5 C42= A41×B12+A42×B22+A43×B32
8 69 78 –5 =5×6+
下一页 (1/3)
下一楼›:可以顶

--> 查看全部回帖(11)
«返回主帖