當前位置:首頁 » 編程語言 » 利用c語言的雙循環求素數之和
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

利用c語言的雙循環求素數之和

發布時間: 2022-05-26 05:53:40

A. c語言程序:使用while循環語句寫一程序完成求100以內的所有素數之和。求各位大佬解答!感激不盡

#include<stdio.h>
intmain()
{inti=2,j,s=0;
while(i<100)
{j=2;
while(j*j<=i)
{if(i%j==0)break;
j++;
}
if(j*j>i)s+=i;
i++;
}
printf("100以內素數的和=%d ",s);
return0;
}

B. 用c語言 求素數之和(即求出素數並相加)

//函數isPrime判斷參數num是否是素數
int isPrime(int num) {
int i;
for(i=2;i<=i/2;k++)
{
if(num%i==0) {
return 0;//num不是素數
}
}
return 1; //num是素數
}
//main函數,進行測試
void main(){
int i;
int primeSum=0;
for(i=2;i<=100;i++) { //此處修改求多大數范圍之內的素數之和
if(1==isPrime(i)) {
primeSum+=i;
}
}
printf("\n100以內的所有素數之和為:%d\n",primeSum);
}

C. 用C語言輸入兩個正整數,求出這兩個數之間的所有素數的和,應該怎麼做

具體思路:利用循環判斷素數,將結果傳遞給控制變數,由控制變數來判斷是否執行自增以及求和。

注意:1既不是素數也不是合數。

D. 用雙循環求0-1000所有素數之和 並顯示出 其個數和總和 哪裡錯了

改成這樣試試:
#include "stdio.h"
#include "math.h"
void main()
{
int i,x,t,sum,s;
sum=0;
s=0;
printf("素數是:\n");
for(x=1;x<=1000;x++)
{
t=1; //t=1要放到循環裡面,因為在外面的話,一旦不是素數,那麼t就會一直為0,不會再判斷是否為素數了。
for(i=2;i<x;i++)
{
if(x%i==0)
{
t=0;
break;
}
}
if(t==1)
{
s=s++;

printf("%4d ",x);
if(s%5==0)
{
printf("\n");
}
}
}
printf("\n");
printf("The total is %d\n",s);
}

E. C語言求素數和

main()
{
int i,m,j; //增加一個變數,見後面說明
for(i=2;i<=100;i++)
{m=sqrt(i);
//for(i=2;i<=m;i++) 這里i值被重新賦值,你原來的i值找不到了!如果是素數,怎麼輸出呢?
for(j=2;j<=m;j++) //換一個變數,不要影響要檢查的數據i
if(j%m!=0) //改成j
; //這樣寫,會讓你更清楚,這句如果j不能整除m,就啥也不幹,象你所說回到下一個循環檢查。
else
break; //加上這兩句,如果能整除則說明:i不是素數!!就不要再去檢查了。
if ( j > m ) //加上這句,如果檢查所有的j全部不能整除m,循環結束後,j一定大於m,這時的i才是素數
printf("%d",i);
}

getch();
}

F. (c語言)求素數和

你s=s+x;
放的位置不對,應該這樣放:
#include
void
main()
{
int
x,n=10,i,s=0;
for(x=3;x<=n;x++)
{
for(i=2;i
=x)
{
printf("%d+",x);
s=s+x;
}
}
printf("\b=%d\n",s);
}
補充:
在用外層的for計算下一個的時候,要把內層for判斷出來的素數累加起來啊
否則,計算到下一個的時候,前一個就丟了啊
所以,累加的那句代碼,應該在外層for循環的裡面,內存for循環的外面(後面)啊

G. ,C語言求素數之和,新手 ,求教

網上的代碼意思是:n就是你輸入的任意數,判斷它是否是素數的方法是用大於2小於n的數去除n,若能整除即不是素數,跳出循環;若數一直增加到n+1都沒有被整除,即可輸出「素數」。
你的源程序:3是素數,很簡單,所以用if來提醒輸入大於3的數,你的只是另一種素數演算法,是優化的演算法,更快。因為只需用2到根號a去判斷。

H. 100以內的素數之和用C語言怎麼編寫程序

這個問題可以分成兩部分解決,一個是判斷素數,另一部分是實現累加和輸出。

一、判斷素數。

有以下兩種常見的判斷素數的方法。

1 通過數學定義判斷,即查找所有因子,如果存在除1及本身以外因子,則非素數。

代碼如下:

#include<math.h>//用到開平方函數,引用對應的數學頭文件
intis_prime(intn)
{
inti;

for(i=2;i<=(int)sqrt(n);i++)//根據數學定義,除本身外,其它因子不可能比平方根更大,所以只需要判斷不大於平方根的值即可。其中sqrt為求平方根函數。
if(n%i==0)return0;//只要有一個符合條件的因子,則非素數,返回0。

return1;//該數為素數。
}

這個演算法可以應用於任何情況。


2 素數篩。

這種演算法的原理是,所有素數的倍數都不是素數。

先假定所有數均為素數,然後去掉已知素數的倍數,最終得到一定范圍內所有素數。

代碼如下:

intmap[100];//數據規模,這里使用題目中的100,實際上應該是標記0-100,也就是101個單位,但是100是已知的非素數,所以用100個元素就足夠了。
voidmake_map(void)
{
inti,j;

map[1]=1;//1不是素數。
for(i=2;i<100;i++)
{
if(map[i])continue;//對於已知的非素數,不做處理
for(j=i*2;j<100;j+=i)
map[j]=1;
}
}

intis_prime(intn)
{
if(map[1]==0)make_map();//如果1沒有被標記為非素數,那麼表示map沒有生成,需要生成map。
returnmap[n]==0;//如map[n]為0,則n為素數
}

這種演算法空間開銷與數據規模成正比,當數據規模比較大時並不適用。

但對於數據規模小且素數判斷頻繁的情況,具有更高的時間開銷優勢。


二、累加。

這部分可以放置於主函數。調用上述任意一種素數判斷函數皆可。

#include<stdio.h>
intmain()
{
intsum=0;//累加結果
inti;

for(i=2;i<100;i++)
if(is_prime(i))sum+=i;//累加素數。

printf("sum=%d ",sum);//輸出結果。
}

最終輸出sum=1060

I. 用c語言找素數並求和

x=0,y=0

CNT=x;
SUM=y;
這兩句之後,都等於0了。刪掉這兩行

J. C語言 求10-20以內素數之和

{
int m,i;
for(m=2;m<=10;m++)
{
for(i=2;i<m;i++)
if(m%i!=0) /*為什麼要用!=呢,這樣只要遇到不能被整除的數就會結束循環,這樣有些數字就會判斷錯誤*/
break; //跳出內層循環
printf("%3d",m); /*這個輸出在外層循環中,只要內層循環結束,就會執行,所以就算break起作用了,也只是跳出內層循環,還是會執行這一句,所以會順序輸出m的值*/
}
}

改:
{
int m,i;
for(m=2;m<=10;m++)
{
for(i=2;i<=m;i++) //改成i<=m,因為素數只能被1和他本身整除
if(m%i==0)//判斷是否有數能將m整除
break; //有則跳出內層循環
if(i==m)/*如果m能被其他數整除,則跳出循環後i值一定比m小,如果只被m本身整除,則跳出循環後i==m,證明m為素數*/
printf("%3d",m); //滿足條件才輸出
}
}