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語言
#include<stdio.h>
#include<math.h>
intisprime(intn){//n為素數時,返回1,否則返回0
inti,flag=1;
if(n<2)return0;
for(i=2;i<=sqrt(n)&&flag;++i)flag=(n%i);
returnflag;
}
intmain(){
intn,cnt=0;;
printf("100~1000之間的素數有:
");
for(n=100;n<1000;++n){
if(isprime(n)){
++cnt;
printf("%d ",n);
if(cnt&&(cnt%10==0))printf("
");
}
}
if(cnt%10)printf("
");
return0;
}
④ 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;
}
⑤ c語言怎麼求素數
在C語言中求素數有很多種方法。剛入門的話,最基本的就是根據素數的定義來判斷一個數是不是素數。要判斷一個數n是不是素數,就用一個循環,從2一直到n -1,如果都不能整除n,那麼n就是一個素數,否則就不是素數。
改進一點的方法就是只要判斷到n/2就可以了。再高效一點的辦法,就只要判斷到根號n就可以了。判斷的依據是相同的。
⑥ 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的話,就列印不是素數,寫個函數是比較好的方法
⑦ 如何求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表示不是素數
如果是求某個范圍的素數,可以連續調用這個方法,上面是常規的方法,還有更好的方法自己去查一下。
⑧ c語言求素數的辦法只需解題思路
看你需不需要追求時間效率
是不是需要求超大的素數,int64 的有20位
甚至高精度情況下的素數,百位上千位
可以建立素數表來求
你仔細想想,任意一個整數都能分成幾個素數的乘積,只由素數只有自己
所以,對於每個我們需要判斷的數,只需要用素數表裡的數來除即可
若都不能整除,那此數一定也是素數,那就把它加入素數表內
一直求下去就行,一般來說10000個數的素數表就能判斷 int32內的素有數
因為素數表能判斷素數的范圍是 表內最大那個素數的平方
⑨ 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較快的素數判斷演算法