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樓:手機使用者 哈哈!不告訴你~~喲霍嗨~~ 最後的輸出迴圈有點問題 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 ... 得到如下代 碼 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且... 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...
c語言輸入兩個正整數m和n,求出區間的所有素數
c語言輸入整數n,接著輸入n個整數儲存在陣列中,計算並輸出陣列的最大值,輸出
c語言。先輸入整數n,在輸入n個整數,輸出它們的平均值。儘量