當前位置:首頁 » 編程語言 » c語言如何求素數

c語言如何求素數

發布時間: 2023-01-15 11:45:30

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

B. 求"求素數的C語言程序"

#include <stdio.h>

int main()

{

int a=0;

int num=0;

int i;

printf("輸入一個整數:");

scanf("%d",&num);

for(i=2;i<num;i++){

if(num%i==0){

a++;

}

}

if(a==0){

printf("%d是素數。 ", num);

}else{

printf("%d不是素數。 ", num);

}

return 0;

}

(2)c語言如何求素數擴展閱讀:

質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。

基本演算法:若 k%m==0 則說明 k 不是素數。

判斷整數n是否為素數——採用枚舉法求解。

採用枚舉演算法解題的基本思路:

(1)確定枚舉對象、枚舉范圍和判定條件;

(2)枚舉可能的解,驗證是否是問題的解。

枚舉演算法的一般結構:while循環。

參考資料來源:網路-枚舉法




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

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

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

D. C語言求100以內素數的問題

C語言求100以內的素數編程的思路和方法如下:

1.首先需要定義兩個整型的游標變數,用於後續的循環操作。這里定義兩個變數為i,j。

E. 如何求C語言素數

如果一個數是素數,只要判斷他是否能被2到這個數的開方之間的數整除就行了。

int flag=0;

if(m==2){ //先判斷是不是2

flag=1;

}

else{

for(int i=2;i<=sqrt(m);i++){

flag=1;

if(m%i==0){ //不是素數

flag=0;

break;

}

}

}

return (flag==1)?m:-1; //判斷是否為1,為1輸出m,否則輸出-1 ,-1表示不是素數

如果是求某個范圍的素數,可以連續調用這個方法,上面是常規的方法,還有更好的方法自己去查一下。

F. 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;

}

(6)c語言如何求素數擴展閱讀:

1.素數的定義是只能被1和他本身整除,1不是素數.因此要判斷一個數是否為素數.就要判斷它能不能被比他小的所有素數整除,這是一個演算法.(寫到演算法時,我只能寫出用它除以比他小的所有數,造成運算速度低下)

2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法2較快的素數判斷演算法

G. 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的話,就列印不是素數,寫個函數是比較好的方法

H. C語言求素數

你的C語言求素數的程序我幫你改完了(僅兩處錯誤),你看看吧(改動的地方見注釋)

#include<stdio.h>

#include<math.h>

intmain()

{

intn,i=1;

intr;//這里floatr;改成intr;因為整數除以整數所得余數還是整數

printf("inputanumbern=");

scanf("%d",&n);

for(i=2;i<=n-1;)

{

r=n%i;

if(r==0)

{

printf("%d不是素數 ",n);

return0;

}

else

{

i=i+1;

if(i>sqrt(n))

{

printf("%d是素數 ",n);

return0;

}

//else//這里去掉else語句塊,因為如果i>sqrt(n)n就是素數,如果i<sqrt(n)應該讓程序自動執行下去

//{

//return(n);

//}

}

}

}

I. C語言求素數

/*求素數的三種方法
一:for(i=2;i<=(n-1);i++)
if(n%i==0)i在2到n-1之間任取一個數,如果n能被整除則不是素數,否則就是素數
二:for(i=2;i<n/2;i++)
if(n%i==0) /*i在2到n/2之間任取一個數,如果n能被整除則不是素數,否則就是素數

三:for(i=2;i<(n=sqrt(n));i++)
if(n%i==0) /*i在2到sqrt(n)之間任取一個數,如果n能被整除則不是素數,否則就是素數,在下省了下面的輸出步驟*/

/*在本程序中使用第三種方法來求解*/
#include <stdio.h>
#include <math.h>
int main(void)
{
int i; /*外循環*/
int j; /*內循環*/
int flag; /*素數標志,flag為1則此數為素數*/
flag = 0;
//int n;
i = 2;
while( i <= 100)
{
j = 2;
flag = 1; /*假設此數為素數*/
while(j <= (int) sqrt(float(i)))
{
if(0 == (i %j))
flag = 0; /*根據第三種演算法可知次數不為素數*/
j ++;
}
if(flag)
printf("%d\t",i);
i++;
}
printf("\n");
return 0;
}

J. c語言求素數

【例】判斷m是否素數。
N-S流程圖:
#include<math.h>
main()
{
int m,i,k;
scanf(「%d」,&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
printf(「%d is a prime number\n」,m);
else
printf(「%d is not a prime number\n」,m);
}

【例】求100至200間的全部素數。
#include<math.h>
main()
{
int m,i,k,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
{printf(「%d」,m);
n=n+1;}
if(n%5==0)printf(「\n」);
}
printf(「\n」);
}

熱點內容
甘肅天水首選伺服器地址雲主機 發布:2025-07-15 14:34:32 瀏覽:714
我的世界java版好玩的外國伺服器網址 發布:2025-07-15 14:20:17 瀏覽:110
電腦的外存儲器 發布:2025-07-15 14:19:42 瀏覽:526
淘淘源碼 發布:2025-07-15 14:12:07 瀏覽:881
自己的主機可以搭建伺服器嗎 發布:2025-07-15 14:09:58 瀏覽:775
atilinux 發布:2025-07-15 14:01:42 瀏覽:822
硬碟緩存越大越好 發布:2025-07-15 13:53:22 瀏覽:387
蘋果六怎麼設置密碼鎖 發布:2025-07-15 13:43:28 瀏覽:33
世界上最強的電腦伺服器 發布:2025-07-15 13:41:13 瀏覽:401
pythonwindows安裝 發布:2025-07-15 13:40:59 瀏覽:558