pascal語言 輸入n至m(包括n和m)間有多少個迴文素數。(0nm)

2022-03-10 04:58:54 字數 4004 閱讀 9073

1樓:pascal真人

思路就是從n到m迴圈,然後判斷 程式:

vara1,a2,a3,a4:longint;

function fun1(a:longint):boolean;//判斷迴文數函式

var s:string; p,p1:longint;

begin

str(s,a);//數字轉字串

p1:=length(s);//測串長

for p:=1 to p1 div 2 do//從1到串長一半迴圈

if s[p]<>s[p1-p+1] then exit(false);//如果不是迴文數以假跳出

exit(true);//以真跳出

end;

function fun2(a:longint):boolean;//判斷素數函式

var p:longint;

begin

for p:=2 to trunc(sqrt(a)) do//這樣你的用時將會被開平方,我們做程式要的是效率

if a mod p<>0 then exit(false);//如果不是素數以假跳出

exit(true);//以真跳出

end;

begin//主程式

readln(a1,a2);//n和n的值

for a3:=a1 to a2 do

if fun1(a3) then//兩個分開會快一點,不然會多判斷

if fun2(a3) then

inc(a4);//加一,此函式會比a4:=a4+1快

write(a4);

end.

祝你學習愉快!有麻煩請向我提問~

2樓:匿名使用者

看題就明白你的意思了。你是想把素數放入一個陣列中,然後對其中的元素一個一個地判斷迴文。

可以這樣實現:

j:=1;

if i就素數 then begin b[j]:=i; inc(j);end;

知道了j的長度,是不是就知道怎麼對其中的元素一個一個地判斷了?

其實,此題可以不用陣列,程式如下:

var n,m,i,j,len,sum:integer;

s:string;

b:boolean;

function prime(x:integer):boolean; //函式prime,判斷一個數是否是素數

var p:integer;

f:boolean;

begin

f:=true;

p:=2;

while(p<=x div 2) and (f) do

if x mod p=0 then f:=false else inc(p);

prime:=f;

end;

begin

readln(n,m);

for i:=n to m do

begin

b:=prime(i);

if b=true then //如果單前i是素數

begin

str(i,s);//將i轉換成字串並存放到s中

len:=length(s);//求字串s的長度

//以下三行判斷s是否迴文

j:=1;

while (j=len then inc(sum);//j>=len表明s是迴文,則計數器sum加1

end;

end;

writeln(sum);

end.

c語言程式設計:輸出m~n之間的迴文素數

3樓:風若遠去何人留

程式開始部分沒什麼問題,結尾一個接一個

是自己想亂了還是著急了?

如果剛學c 最好還是先列個流程 然後再寫,不容易出錯改正後的程式如下,原因見註釋

#include

int main()

if(b==p)

{for(q=2;q

寫程式求m到n之間(包括m和n,m<=n)素數的個數及其平均值,如果沒有素數則輸出no,m和n由鍵盤輸入

4樓:匿名使用者

int main()

}if(p==0)

}if(q==0) cout<<"no";

else

cout<

return 0;}

c語言給定兩個數m,n,其中m是一個素數。 將n(0<=n<=10000)的階乘分解質因數,求其中有多少個m。

5樓:風若遠去何人留

求n的階乘 n!

然後對n的階乘分解質因數

看其中有多少個m

比如n = 5, m = 3

那麼n!=120=2*2*2*3*5

其中有一個3 那麼輸出3

思路不能直接求階乘 那樣一個是太大 再一個時間開銷也多直接對1->n 每個值做判斷 其中有多少個質因子m 然後所有的相加就可以

c語言 輸入兩個正整數m和n(m

6樓:匿名使用者

#include

int is_prime(int x)

for(i=2;i

}if(i == x)

return flag;

}int main()

}printf("%d\n",sum);

return 0;}

7樓:匿名使用者

#include

int is_prime(int x,int y)}return m;

}int main()

輸入兩個正整數m和n(m

8樓:匿名使用者

不好意思,這幾天比較忙,現在才看到你的求助。

這個程式我建議你不要去用函式求,那樣太麻煩了。樓上的這位寫的一看就知道沒有編譯過,演算法都錯了。

這是我寫的,已經編譯通過,簡明易懂,希望對你有幫助。

#include

#include

int main(void)

for(i=m;i<=n;i++) // 下面是求素數的演算法}

system("pause");

return 0;

}望採納,謝謝!!祝你學業有成

9樓:匿名使用者

改動很大.....

#include

int is_prime(int m,int n) //

}return x;

}int main()

輸入兩個整數m,n(0

10樓:希聲和寡

#include

#include

//判斷n是否是素數

int prime(int n)

//孿生素數

void luanshengsushu(int m,int n)}if (count%5!=0) printf("\n");

}int main()

}while(1);

luanshengsushu(m,n);

return 0;}

11樓:

#include

int isprn(int n)

return 1;

}int main()

m++;

}if(f==0)

printf("沒有\n");

return 0;}

12樓:手機使用者

哈哈!不告訴你~~喲霍嗨~~

c語言輸入兩個正整數m和n,求出區間的所有素數

最後的輸出迴圈有點問題 for int i 0 i x i printf d a i 因為你上邊已經x 你如果判斷條件裡寫成 for int i 0 i x i 程式是要崩的。除了1和自身之外沒有其它正整數因子的正整數稱為素數,也就是不用試1和自身 for j 2 j i j 改為 for j 2 ...

c語言輸入整數n,接著輸入n個整數儲存在陣列中,計算並輸出陣列的最大值,輸出

得到如下代 碼 include int main imax a 0 for i 1 i n i printf d n imax return 0 c語言,c語言!輸入一個正整數n 1 include void main int i,n,k 0,max,a 10 printf 輸入正整數n n大於1且...

c語言。先輸入整數n,在輸入n個整數,輸出它們的平均值。儘量

include int main printf 3f n n float sum n 本結果保留 dao三位小數 版 可自權行調整 用c語言程式設計 要求用陣列,先輸入一個正整數n,在輸入n個整數,求其平均值 保留兩位小數 float a 10 sum,m int n sum 0 scanf d n...