素數和c語言
Ⅰ 求1到100以內所有素數之和(c語言)
1到100之間的所有素數之和;素數曾稱質數。一個大於1的正整數,如果除了1和它本身以外,不能被其它正整數整除,就叫素數。1不是素數。
2+3+5+7+11+13+17+19+23+29+31+37+41+43+47+53+59+61+67+71+73+79+83+89+97=1060,100以內所有素數之和是1060
#include"stdafx.h"
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
int isPrime(int n)//求素數,這是最經典的演算法代碼。
{
int j;
for(j=2;j*j<=n;j++)
if(n%j==0)
return 0;
return 1;
}
int main(void)
{
int i,sum=0;
for(i=2;i<100;i++)
if(isPrime(i))
{
sum+=i;
printf("%d ",i);
}
printf("%d ",sum);
getchar();
system("pause");
return 0;
}
運算輸出:
(1)素數和c語言擴展閱讀:
include用法:
#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。
插入頭文件的內容
#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:
1、#include<文件名>
2、#include"文件名"
Ⅱ (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循環的外面(後面)啊
Ⅲ 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();
}
Ⅳ 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
Ⅳ 用C語言如何判斷素數
素數又稱質數,所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2~16 的任一整數整除。
思路1、判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼 m 就是一個素數。
思路2、判斷方法還可以簡化。
m 不必被2~m-1之間的每一個整數去除,只需被2~√m之間的每一個整數去除就可以了。如果 m 不能被2~√m間任一整數整除,m必定是素數。例如判別17是是否為素數,只需使17被2~4之間的每一個整數去除,由於都不能整除,可以判定17是素數。
原因:因為如果m能被2~m-1之間任一整數整除,其二個因子必定有一個小於或等於√m,另一個大於或等於√m。
例如16能被2、4、8整除,16=2*8,2小於 4,8大於4,16=4*4,4=√16,因此只需判定在2~4之間有無因子即可。
兩種思路的代碼請看解析。
拓展資料:
素數(prime number)又稱質數,有無限個。素數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。
C語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。
網路——C語言
Ⅵ c語言怎麼求素數
在C語言中求素數有很多種方法。剛入門的話,最基本的就是根據素數的定義來判斷一個數是不是素數。要判斷一個數n是不是素數,就用一個循環,從2一直到n -1,如果都不能整除n,那麼n就是一個素數,否則就不是素數。
改進一點的方法就是只要判斷到n/2就可以了。再高效一點的辦法,就只要判斷到根號n就可以了。判斷的依據是相同的。
Ⅶ c語言中 素數和的程序怎麼編
可以寫一個判斷n是否素數的函數,是素數就返回1(真)否則就返回0(假)。
在main()函數中用循環,檢測指定范圍內的每一個數,是素數的話就把它們累加起來。
#include<stdio.h>
int isprime(int n)
{int i;
for(i=2;i*i<=n;i++)
if(!(n%i))return 0;
return n>1;
}
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(" %d~%d之間的素數和=%d ",a,b,s);
return 0;
}
Ⅷ C語言中,何為素數何為非素數用C語言如何表示
C語言中的素數和數學中的素數是一樣的,即:除了1和它本身之外,不能被任何數整除的數(1不是素數)。也就是說素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。
非素數的定義就很明了了,素數以外的數都是非素數,在C語言中,求素數的方法,就是從2開始,依次判斷該數是否可以被2以上到該數以下的數整除,如果可以,就不是素數,如果不可以被所有大於或等於2小於該數的整數整除,那麼就是素數了
Ⅸ c語言求素數的演算法
根據素數的性質,代碼設計如下:
設計一:判斷n是否能被1~n-1整除,不能整除為素數
#include<stdio.h>
int main()
{
int i, n;
scanf("%d", &n);
for (i = 2; i < n ; i++)
{
if (n%i == 0)
break;
}
if (i < n) printf("This is not a prime.");
else printf("This is a prime.");
return 0;
}
設計二:判斷n是否能被2~√n間的整數整除,不能整除為素數
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
double k;
scanf("%d", &n);
k = sqrt(n);
for (i = 2; i <= k;i++)
{
if (n%i == 0) break;
}
if (i <=k) printf("This is not a prime.");
else printf("This is a prime");
return 0;
}
(9)素數和c語言擴展閱讀:
1.素數的定義是只能被1和他本身整除,1不是素數.因此要判斷一個數是否為素數.就要判斷它能不能被比他小的所有素數整除,這是一個演算法.(寫到演算法時,我只能寫出用它除以比他小的所有數,造成運算速度低下)
2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法2較快的素數判斷演算法
Ⅹ 用C語言如何判斷素數
按照如下步驟即可用C語言判斷素數:
1、首先打開visual C++ 6.0,然後點擊左上角的文件,再點擊新建。