當前位置:首頁 » 編程語言 » c語言判斷素數函數程序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言判斷素數函數程序

發布時間: 2022-08-07 19:42:41

1. 用c語言的編程:利用調用函數,判斷一個數是否是素數。

1、首先需要打開vs軟體工程,准備好一個空白的C語言文件,引入頭文件,主函數中暫時沒有內容:

2. c語言判斷是不是素數的程序

1、首先打開CodeBlocks,創建一個新項目。

3. 判斷素數的C語言程序

1
根據數學定義,得到判斷素數的函數。
2
主函數中輸入整數。
3
調用函數判斷
4
根據返回值,輸出結果。
代碼:
#include
<stdio.h>
#include
<math.h>
int
is_prime(int
n)
{
int
i;
for(i
=
2;
i
<=
sqrt(n);
i
++)
if(n%i
==
0)
return
0;
return
1;
}
int
main()
{
int
i;
scanf("%d",&i);
if(is_prime(i))printf("%d是素數\n",
i);
else
printf("%d不是素數\n",
i);
return
0;
}

4. 求判斷素數的C語言程序

所謂素數是指除了1和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被2~16的任一整數整除。因此判斷一個整數m是否是素數,只需把m被2~m-1之間的每一個整數去除,如果都不能被整除,那麼m就是一個素數
另外判斷方法還可以簡化。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之間有無因子即可)
#include<stdio.h>
#include<math.h>
void
main()
{
int
m,i,k;
printf("請輸入一個整數:");
scanf("%d",&m);
k=(int)sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>k)
printf("%d
是素數。\n",m);
else
printf("%d
不是素數。\n",m);
}

5. c語言編寫函數判斷素數

/判斷是不是素數

#include<stdio.h>

int prime(int a);//函數聲明

int main()

{

int n,i;

scanf("%d",&n);

if(prime(n)==1) //return返回值1

printf("prime");

else

printf("not prime") ;

}

int prime(int a)

{

int i;

for(i=2;i<a;i++)

if(a%i==0)

return 0;//a%i==0不成立

else

return 1;//a%i==0成立

}

(5)c語言判斷素數函數程序擴展閱讀:

素數的演算法

1、素數:除了1和本身外無法被其他自然數整除的數,叫做素數,也稱質數,如:2,3,5,7一系列。

2、合數:比1大但不是素數的數稱為合數,如:8,9,10一系列。

3、特殊的數字:1和0既不是素數也不是合數。

4、演算法: 1>確定性演算法 2>隨機性演算法 3>Eratosthenes演算法。

6. c語言編程:設計一個函數用於判斷一個數是否為素數,如果是素數返回1,否則返回0。

源程序代碼以及演算法解釋如下:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int Func(int m)//判斷函數

{

int n = 2;

while (n <= m && (m%n))//判斷是否能被其他數整除

n++;

if (m == n)

return 1;

else

return 0;

}

int main()

{

int M_num;//定義變數

printf("請輸入需要判斷的數: ");//文字提示

scanf("%i", &M_num);//循環輸入數組元素

int i = Func(M_num);//判斷是否是素數

if (i == 1)//輸出結果

printf("輸入的數是素數");

if (i == 0)

printf("輸入的數不是素數");

printf(" ");

return 0;

}

程序運行結果如下:



(6)c語言判斷素數函數程序擴展閱讀:

輸出1-100之間的所有素數程序如下:

#include<stdio.h>

int PrimeNumer(int x) //定義一個函數判斷

{

assert(x > 0); //判斷

int i; //被除數

for (i = 2; i < x; i++)

{

if (x%i == 0)

{

return 0; //表示正常終止

}

}

return 1; //只是給主調函數一個標志,說明他的執行過程中遇到異常情況。 然後就返回主調函數來處理,繼續執行。

}

int main()

{

int i,a;

int count = 0;

for (i = 2; i < 101; i++)

{

if (PrimeNumer(i)) //調用函數來判斷

{

count++; //加入了一個計數器

printf("%d ", i);

}

}

printf("素數出現的次數%d", count);

system("pause");

return 0;

}

7. 求C語言中 判斷素數的 代碼!!!!!

基本思想:把m作為被除數,將2—INT( )作為除數,如果都除不盡,m就是素數,否則就不是。

可用以下程序段實現:

void main()

{ int m,i,k;

printf("please input a number: ");

scanf("%d",&m);

k=sqrt(m);

for(i=2;i<k;i++)

if(m%i==0) break;

if(i>=k)

printf("該數是素數");

else

printf("該數不是素數");

}

將其寫成一函數,若為素數返回1,不是則返回0

int prime( m%)

{int i,k;

k=sqrt(m);

for(i=2;i<k;i++)

if(m%i==0) return 0;

return 1;

}

(7)c語言判斷素數函數程序擴展閱讀:

篩法求素數

一、基本思想

用篩法求素數的基本思想是:

把從1開始的、某一范圍內的正整數從小到大順序排列, 1不是素數,首先把它篩掉。剩下的數中選擇最小的數是素數,然後去掉它的倍數。依次類推,直到篩子為空時結束。

如有:

1 2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20

21 22 23 24 25 26 27 28 29 30

1不是素數,去掉。剩下的數中2最小,是素數,去掉2的倍數,餘下的數是:

3 5 7 9 11 13 15 17 19 21 23 25 27 29

剩下的數中3最小,是素數,去掉3的倍數,如此下去直到所有的數都被篩完,求出的素數為:

2 3 5 7 11 13 17 19 23 29

二、C++實現

1、演算法一:令A為素數,則A*N(N>1;N為自然數)都不是素數。

#definerange2000

bool

IsPrime[range+1];

/*set函數確定i是否為素數,結果儲存在IsPrime[i]中,此函數在DEV

C++中測試通過*/

voidset(boolIsPrime[])

{

inti,j;

for(i=0;i<=range;++i)

IsPrime[i]=true;

IsPrime[0]=IsPrime[1]=false;

for(i=2;i<=range;++i)

{

if(

IsPrime[i])

{

for(j=2*i;j<=range;j+=i)

IsPrime[j]=false;}}}

2、

說明:解決這個問題的訣竅是如何安排刪除的次序,使得每一個非質數都只被刪除一次。 中學時學過一個因式分解定理,他說任何一個非質(合)數都可以分解成質數的連乘積。

例如,16=2^4,18=2 * 3^2,691488=2^5 * 3^2 * 7^4等。如果把因式分解中最小質數寫在最左邊,有16=2^4,18=2*9,691488=2^5 * 21609,;

換句話說,把合數N寫成N=p^k * q,此時q當然是大於p的,因為p是因式分解中最小的質數。由於因式分解的唯一性,任何一個合數N,寫成N=p^k * q;的方式也是唯一的。

由於q>=p的關系,因此在刪除非質數時,如果已知p是質數,可以先刪除p^2,p^3,p^4,... ,再刪除pq,p^2*q,p^3*q,...,(q是比p大而沒有被刪除的數),一直到pq>N為止。

因為每個非質數都只被刪除一次,可想而知,這個程序的速度一定相當快。依據Gries與Misra的文章,線性的時間,也就是與N成正比的時間就足夠了(此時要找出2N的質數)。

代碼如下:

#include<iostream>

#include<cmath>

usingnamespacestd;

intmain()

{

intN;cin>>N;

int*Location=newint[N+1];

for(inti=0;i!=N+1;++i)

Location[i]=i;

Location[1]=0;//篩除部分

intp,q,end;

end=sqrt((double)N)+1;

for(p=2;p!=end;++p)

{

if(Location[p])

{

for(q=p;p*q<=N;++q)

{

for(intk=p*q;k<=N;k*=p)

Location[k]=0;

}

}

}

intm=0;

for(inti=1;i!=N+1;++i)

{

if(Location[i]!=0)

{

cout<<Location[i]<<"";

++m;

}

if(m%10==0)cout<<endl;

}

cout<<endl<<m<<endl;

return0;

}

該代碼在Visual Studio 2010 環境下測試通過。

以上兩種演算法在小數據下速度幾乎相同。

8. 編寫一個C語言程序判斷一個數是否是素數

目的:判斷一個數是否為素數

#include<stdio.h>


intmain(void)


{


int m;


inti;


scanf("%d",&m);


for(i=2;i< m;i++) //2到(m-1)的數去除m


{


if(m%i==0)//判斷能否整除


break;

}

if(i== m)


printf("YES! ");


else


printf("No! ");


}

for循環的功能:

①若能整除,通過break跳出函數;

②若一直到m-1都不能整除,此時i再自增1到m,不滿足i< m跳出for循環,這時i= m。

(8)c語言判斷素數函數程序擴展閱讀:


素數定理:



1、在一個大於1的數a和它的2倍之間(即區間(a,2a]中)必存在至少一個素數。



2、存在任意長度的素數等差數列。



3、一個偶數可以寫成兩個合數之和,其中每一個合數都最多隻有9個質因數。(挪威數學家布朗,1920年)。



4、一個偶數必定可以寫成一個質數加上一個合成數,其中合數的因子個數有上界。(瑞尼,1948年)。



5、一個偶數必定可以寫成一個質數加上一個最多由5個因子所組成的合成數。後來,有人簡稱這結果為(1+5)(中國潘承洞,1968年)。



6、一個充分大偶數必定可以寫成一個素數加上一個最多由2個質因子所組成的合成數。簡稱為(1+2)。

9. 用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語言

10. 用C語言如何判斷素數

按照如下步驟即可用C語言判斷素數:

1、首先打開visual C++ 6.0,然後點擊左上角的文件,再點擊新建。