//樓主判定"素數(shù)"的算法需要改善,可參考其他網(wǎng)友的算法.
十年建站經(jīng)驗, 網(wǎng)站設(shè)計、成都網(wǎng)站制作客戶的見證與正確選擇。成都創(chuàng)新互聯(lián)提供完善的營銷型網(wǎng)頁建站明細報價表。后期開發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。
#include?stdio.h
#include?math.h
int?prime(?int?p?);
int?PrimeSum(?int?m,?int?n?);
int?main()
{
int?m,?n,?p;
scanf("%d?%d",?m,?n);
printf("Sum?of?(?");
for(?p=m;?p=n;?p++?)
{
if(?prime(p)?!=?0?)
printf("%d?",?p);?????//輸出素數(shù)
}
printf(")?=?%d\n",?PrimeSum(m,?n));
return?0;
}
int?prime(?int?p?)
{
int?m=p;
while(m1)
{
m--;
//在函數(shù)prime里,如果p是素數(shù),當循環(huán)到m等于2,在執(zhí)行m--之后,m就等于1,
//再執(zhí)行if(p%m==0),必然return?0
//所以,在m--之后,增加一句if(1==m)?return?1;
if(1==m)
{
return?1;
}
if(p%m==0)
{
return?0;
}
}
return?1;
}
int?PrimeSum(?int?m,?int?n?)
{
int?result=0;
for(m;m=n;m++)
{
if(prime(m)!=0)
result=result+m;
}
return?result;
}
可以寫一個判斷n是否素數(shù)的函數(shù),是素數(shù)就返回1(真)否則就返回0(假)。
在main()函數(shù)中用循環(huán),檢測指定范圍內(nèi)的每一個數(shù),是素數(shù)的話就把它們累加起來。
#includestdio.h
int isprime(int n)
{int i;
for(i=2;i*i=n;i++)
if(!(n%i))return 0;
return n1;
}
int main()
{int i,a,b,s=0;
scanf("%d%d",a,b);
for(i=a;i=b;i++)
if(isprime(i))
{printf("%d ",i);
s+=i;
}
printf("\n%d~%d之間的素數(shù)和=%d\n",a,b,s);
return 0;
}
您好,很高興回答您的問題。
對于您的這個問題,有兩個方面的知識點需要掌握,一是素數(shù)的判斷標準,我們知道只能被1和數(shù)本身整除的數(shù)叫素數(shù),具體實踐時就要用到循環(huán)結(jié)構(gòu);而是函數(shù)的調(diào)用,要清楚調(diào)用函數(shù)的結(jié)構(gòu)和使用方法,才能用好調(diào)用。
以上兩個問題解決了,那么這個程序就可以實現(xiàn)功能了。還有關(guān)鍵的一點就是您沒有給出具體的范圍,也就是求哪個范圍內(nèi)的素數(shù)之和呢,沒有這個范圍,也就沒有辦法求出和了。
#include stdio.h
#include math.h
int pd(int k) //判斷質(zhì)數(shù) 效率挺高的 你也可以用二重篩選法 那個算法是最快的
{
int i;
int s=sqrt(k);
if(k==1) return 0;
if(k==2) return 1;
if(k%2==0) return 0;
for(i=3;i=s;i+=2)
if(k%i==0) return 0;
return 1;
}
int main()
{
int i=2,k=0,sum=0; //i表示數(shù)字 k這表示有多少個質(zhì)數(shù)了 sum表示質(zhì)數(shù)的和
while(k=50)
{
if(pd(i)) { k++;sum+=i;}
i++;
}
printf("%d",sum);
return 0;
}
樓主 給我吧
#include?stdio.h
#include?math.h
//判斷是否為素數(shù)的函數(shù)
int?isPrime(int?n)
{
int?i=2;
while(i=(int)sqrt(n))
{
if(n%i?==?0)
return?0;??//不是素數(shù),直接返回0
else
i++;
}
return?1;
}
int?main()
{
int?n,i;
printf("輸入一個正整數(shù):?");
scanf("%d",n);
for(i=2;i=n;i++)
{
if(isPrime(i))??//調(diào)用函數(shù),如果該數(shù)為素數(shù),則輸出
printf("%d?",i);
}
printf("\n");
return?0;
}
示例運行結(jié)果:
輸入一個正整數(shù): 50
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
#include "stdio.h"
#include "math.h"
int main(void)
{
int count, i, m, n, sum;
int repeat, ri;
int prime(int m);
scanf("%d", repeat);
for(ri = 1; ri = repeat; ri++){
scanf("%d %d", m, n);
sum = count = 0;
for(i=m;i=n;i++){
if(prime(i)==1){
sum=sum+i;
count++;}
}
printf("Count=%d,sum=%d\n",count,sum);
}
}
int prime(int m)
{
int i;
if(m==2)return 1;
if(m==1)return 0;
if(m2){
for(i=2;im;i++){
if(m%i==0)
return 0;}
return 1;//你的主要問題在這里,上面的for循環(huán)已經(jīng)限定了i不會大于m的,你再用了一個if(i=m)就不對了
}
}
網(wǎng)站標題:c語言調(diào)用函數(shù)素數(shù)和 C語言函數(shù)素數(shù)
鏈接URL:http://muchs.cn/article14/hggide.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、全網(wǎng)營銷推廣、網(wǎng)站制作、面包屑導(dǎo)航、動態(tài)網(wǎng)站、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)