c語言求素數函數
㈠ 用c語言如何判斷素數
按照如下步驟即可用C語言判斷素數:
1、首先打開visual C++ 6.0,然後點擊左上角的文件,再點擊新建。
㈡ 用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語言:輸出1000~2000之間的所有素數,每行輸出8個,要求調用求素數函數。
#include <stdio.h>
int sushu(int n)
{
int i;
for(i=2;i<n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int main ()
{
int n,m,j=0;
for(n=1000;n<=2000;n++)
{ m=sushu(n);
if(m==1)
{
printf("%d ",n);
j++;
if(j%8==0)
printf(" ");
}
}
return 0;
}
(3)c語言求素數函數擴展閱讀:
定義:質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。
性質:素數大於等於2 不能被它本身和1以外的數整除。
函數在編程中的定義:
函數過程中的這些語句用於完成某些有意義的工作——通常是處理文本,控制輸入或計算數值。通過在程序代碼中引入函數名稱和所需的參數,可在該程序中執行(或稱調用)該函數。
類似過程,不過函數一般都有一個返回值。它們都可在自己結構裡面調用自己,稱為遞歸。
大多數編程語言構建函數的方法里都含有函數關鍵字(或稱保留字。
參考資料來源:網路-函數
㈣ C語言編寫一個求素數函數1至1000之間
代碼如下:
#include<stdio.h>
intfoundit(inti) //按照題意,定義了一個函數,判斷是否素數
{
intavg;
intk;
avg=(int)sqrt(i);
for(k=3;k<=avg;k+=2)//直接從3開始,因為i是奇數。
if(i%k==0)//余數為0,說明不是素數
return0;
return1;
}
intmain()
{
inti; //循環變數
intsushu=2; //2是素數,直接保存下來。
for(i=3;i<1000;i+=2)//掃描3到1000之間的所有奇數
{
if(foundit(i)==1)
{
if(i-sushu==2)
printf("%d和%d、",sushu,i);
sushu=i;
}
}
return0;
}
運行的結果:
3和5、5和7、11和13、17和19、29和31、41和43、59和61、71和73、101和103、107和109、137和139、149和151、179和181、191和193、197和199、227和229、239和241、269和271、281和283、311和313、347和349、419和421、431和433、461和463、521和523、569和571、599和601、617和619、641和643、659和661、809和811、821和823、827和829、857和859、881和883
㈤ 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;
}
(5)c語言求素數函數擴展閱讀:
1.素數的定義是只能被1和他本身整除,1不是素數.因此要判斷一個數是否為素數.就要判斷它能不能被比他小的所有素數整除,這是一個演算法.(寫到演算法時,我只能寫出用它除以比他小的所有數,造成運算速度低下)
2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法2較快的素數判斷演算法
㈥ 用c語言編程序,用函數求素數,調用函數
#include<stdio.h>
#include<math.h>
//判斷是否為素數的函數
intisPrime(intn)
{
inti=2;
while(i<=(int)sqrt(n))
{
if(n%i==0)
return0;//不是素數,直接返回0
else
i++;
}
return1;
}
intmain()
{
intn,i;
printf("輸入一個正整數:");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
if(isPrime(i))//調用函數,如果該數為素數,則輸出
printf("%d",i);
}
printf(" ");
return0;
}
示例運行結果:
輸入一個正整數: 50
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
㈦ 求素數的C語言程序!
C語言-尋找素數
附代碼:
#include<stdio.h>
#include<math.h>
int main()//原理:設ab=c,a<b,則有a<根號c<b。若設a恆小於根號c,則只需判斷a是否為因數
{
int a, b;
printf("請按從小到大輸入兩個素數:");
scanf_s("%d %d", &a, &b);
int n = 0,m=0,sum = 0;
double i, j;//i是從a到b的待篩選數,j是從2到根號i的除數,要判斷j是否為i的因數
for (i = a; i <= b; i++)
{
m = 0;
int c = int(pow(i, 0.5));
for (j = 2; j <= c; j++)
{
if ((i / j - int(i / j)) == 0.0)
{
m++;//m是i被從2到根號i的j除了之後,商為整數,即發現j是i的因數的次數
}
}
if (m==0)
{
printf("找到素數:%d
", int(i));
n++;
sum = sum + i;
}
}
printf("大於等於%d,小於等於%d的素數的個數為:%d
", a, b, n);
printf("它們的和為:%d", sum);
return 0;
}
㈧ 用c語言編程序,用函數求素數,調用函數是什麼
#include<stdio.h>
#include<math.h>
int fun(int n)
{ int i;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return 0;
}
return 1;
}void main()
{
int n;
printf("請輸入一個數:\n");
scanf("%d",&n);
if(fun(n))
printf("該素數是:%d",n);
else
printf("該數不是是素數:\n");
}
㈨ C語言如何使用自定義函數判斷素數
#include <stdio.h>
int fun(int x)//
{
if(x<2)
return 0;//返回0,非素數
for(int i=2;i*i<=x;i++)
if(x%i==0)
return 0;
return 1;//返回1,素數
}
int main()
{
int n;
scanf("%d",&n);
if(fun(n)==1)
printf("%d是素數 ",n);
else
printf("%d不是素數 ",n);
return 0;
}
㈩ c語言中如何求素數
#include<stdio.h>
#include<math.h>
void main() // 這里不要搞錯了,main
{
int i,n;
printf("輸入一個整數n");
scanf("%d",&n);
n=abs(n);
if(n>2)
{
for(i=2;i<n;i++)// 在for下面跟個if判斷,如果你輸入4的話,這個程序列印兩次4不是
if(n%i==0&&n==i)
scanf("%d是素數",n); break ;// 這里應該是printf了吧,
else
scanf("%d不是素數",n); break;// 這樣會比較好點
}
else
scanf("%d不是素數",n);// 2就不是素數么,
}
這樣也有問題,當你輸入5的時候,for語句先判斷能否整除2,不能整除2的話,就列印不是素數,寫個函數是比較好的方法