1樓:網友
按你的程式我給你演示下:
先找到113,然後是a=114,x是 5,for迴圈下來c=false,第乙個if語句布林值是假,第二個是真,所以在114不是質數的情況下也換行了。
下面是改進後的程式:
vara,b,x:integer;
c:boolean;
beginx:=0;
c:=true;
for a:=100 to 200 do
beginfor b:=2 to trunc(sqrt(a)) doif (a mod b)=0 then beginc:=false;
break;
end;if c=true then beginwrite(a,'
inc(x);
if x mod 5=0 then writeln;
end;c:=true;
end;end.
2樓:網友
換行列印放在inc(x);後面,否則即使不是素數仍然滿足條件。
program huzhi;
var a,b,x:integer;
c:boolean;
begin;
x:=0;c:=true;
for a:=100 to 200 do
beginfor b:=2 to trunc(sqrt(a)) doif (a mod b)=0 then c:=false;
if c=true
thenbegin
write(a,'
inc(x);
if x mod 5=0 then writeln;
end;c:=true;
end;end.
3樓:網友
你的x值在判斷當前不為素數的情況下,若仍為5的倍數,就會自動換行。
pascal 100 200素數
4樓:
必盯液須在迴圈末尾加缺則備乙個c:=true;【就是if c=true then writeln(a);後面】否伏毀則進入下乙個數時,c還是false,所以每個都不輸出。
pascal 求1-100之間的所有素數
5樓:網友
<1>先將1去掉。
2>將2的倍數去掉。
3>將3的倍數去掉。 …
將i的倍數去掉。 …
一直到 根號a。
**如下:vara:array[1..300] of integer;
i,j,k:integer;
beginfor i:=2 to 100 do a[i]:=i;
for i:=2 to sqrt(100) doif a[i]<>0 then (提高效率)begin
j:=1;repeat
j:=j+1;
k:=i*j;
a[k]:=0;
until k>100; (為i的倍數標記)end;
for i:=2 to 100 do
if a[i]<>0 then writeln(i);
end.純粹篩選法。
pascal求出100以內的全部素數,並按每行五個數顯示
6樓:網友
輸入n輸出為1~n的素數,每五個一行。
vari,j,count,n:longint;//i,j為迴圈變數;count為計數器,每滿五則換行並清零;n為輸入的數;
f:boolean;//判斷是否為素數的變數;
beginreadln(n);//讀入。
for i:=2 to n do//外迴圈,列舉從2到n的數,由於1比較特殊,所以從2列舉。
beginf:=true;//判斷量先設為true;
for j:=2 to trunc(sqrt(i)) do//列舉從2 到 根號i取整的數,這樣可以有效節約時間複雜度;
if i mod j =0 then f:=false;如果在2~n之間有能整除i的數則將判斷量設為false;
if f then//如果i為素數。
beginwrite(i,' ');//輸出i;
inc(count);//給計數器加一;
if count=5 then begin writeln;count:=0;end;//如果計數器滿五則清零並換行;
end;//end if;
end;//end for i;
end.//end program;
下面是輸入為100的輸出結果:
如果要求每行末尾不能有空格,那麼把if f then 後面改為下面:
if f then
begininc(count);
if count=5 then begin count:=0;writeln(i);end
else write(i,' ');
end;最後,還請給個最佳吧~~
pascal列印一萬內所有質數,一行列印十個
7樓:憶可棠
經典的篩選法哦。效率高,執行起來非常快。
var a:array [1..10000] of boolean;
i,j:longint;
beginfor i:=1 to 10000 do a[i]:=true;
for i:=2 to 5000 do
if a[i] then for j:=2 to trunc(10000/i) do a[i*j]:=false;
j:=0;for i:=2 to 10000 do if a[i] then begin
write(i:5);
j:=j+1;
if j mod 10=0 then writeln;
end; end.
1到100的素數之和為多少?用pascal怎麼程式設計?
8樓:網友
vark,n,i,f,s:longint;
beginreadln(k);
for n:=2 to k do
beginf:=0;
for i:=2 to n-1 do
if n mod i=0 then
beginf:=1;
break;
end;if f=0 then inc(s,n);
end;writeln(s);
end.這是輸入k,輸出k以內的!最基本的了,很慢。不過100沒問題,要快的需要費嗎小定了,那個就很難了。
pascal輸出100 以內的全部素數,要求每行顯示5 個。
9樓:歐陽傷
var i,j,n,x:longint;
yes:boolean;
num:array[1..100]of longint;
beginn:=1;
num[1]:=2;
for i:=3 to 100 do
beginyes:=true;
for j:=2 to round(sqrt(i)) do
if i mod j=0 then begin yes:=false;break;end;
if yes then begin inc(n);num[n]:=i;end;
end;for i:=1 to n do
beginif ((i-1) mod 5=0)and(i<>1) then
writeln;
write(num[i],' ');
end;end.
num:array[1..100]of longint 是乙個陣列 一般形式是。
陣列名:array[陣列邊界。陣列邊界]of 資料型別;
要是多維陣列的話 就是在每組陣列邊界之間加個逗號就行了。
用於儲存質數的 這個只是為了輸出方便 每行輸出五個 也可以通過其他的方法來實現 但是「963569780」這位仁兄的方法是錯的 t:=t+1應該在 if t mod 5 = 0 then writeln; 的後面 否則第一行只能輸出四個。
10樓:網友
num:array[1..100]of longint;這個命令是陣列定義,前面應該還有var吧。
表示定義陣列num,它的下標是從1到100,而且這100個元素都是longint長整型的。跟每行輸出5個沒有關係。程式如下:
vari,t:longint;
num:array[1..100] of integer;
function ss(x:integer):boolean;
varr:integer;
beginss:=true;
for r:=2 to trunc(sqrt(x)) doif x mod r = 0 then
beginss:=false;
exit;end;
end;begin
t:=0;for i:=2 to 100 do
if ss(i) then
begint:=t+1;
if t mod 5 = 0 then writeln;
write(i,' ');
end;writeln;
end.
11樓:網友
陣列型別 。 在 記憶體中開連續 的 100 個 有符號長整型。
可以通過 num[i] (i 為下標) 直接 訪問 、修改。
基礎中的基礎。。。
好好看看書。。。
pascal問題!用while語句解
主體思路 列舉 i 從2開始,直到 n 檢查每個 i 是否是 n 的因子 程式 及 解釋 var 定義變數n,i longint begin readln n write n,i 1 while i begin inc i 列舉 if n mod i 0 then 如果i是n的因子begin n n...
pascal中的case句怎麼用
pascal中的case語句形式如下 case 表示式 of 常量1 語句1 常量2 語句2 常量n 語句n else 語句 n 1 可選項 end 其中常量1 n為固定值,不能是資料範圍,但可以是資料集合。表示式,僅可以取變數本身,也可以是帶運算的變數,也可以是邏輯表示式,但邏輯表示式的話,其下方...
用100 200字概括一下鑿壁偷光的故事
鑿壁偷光講的是匡衡,西漢的著名學者匡衡,出身於農民家庭,生活十分貧困。他從小就很渴望讀書,可是父母沒有能力供他上學,甚至連書本也買不起,匡衡只好向別人借書來看。某天晚上,匡衡很希望在睡前讀一讀書,但由於家中窮得連燈油也沒有,根本沒法點燈讀書。正當匡衡發愁時,忽然發現絲絲的光線,正從牆壁的縫隙中透射過...