本文目錄一覽:
- 1、判斷素數的c語言程序是什麼?
- 2、C語言編程判斷m是否為素數
- 3、求判斷素數的C語言程序
- 4、用C語言如何判斷素數
- 5、求C語言中 判斷素數的 代碼!!!!!
- 6、編寫一個C語言程序判斷一個數是否是素數
判斷素數的c語言程序是什麼?
基本思想:把m作為被除數,將2—INT()作為除數,如果都除不盡,m就是素數,否則就不是。
可用以下程序段實現:
voidmain()
{intm,i,k;
printf(“pleaseinputanumber:\n”);
scanf(“%d”,m);
k=sqrt(m);
for(i=2;ik;i++)
if(m%i==0)break;
if(i=k)
printf(“該數是素數”);
else
printf(“該數不是素數”);
}
將其寫成一函數,若為素數返回1,不是則返回0
intprime(m%)
{inti,k;
k=sqrt(m);
for(i=2;ik;i++)
if(m%i==0)return0;
return1;
}
擴展資料:
100-200之間的素數的個數,以及所有的素數
#includestdio.h
#includemath.h
intmain()
{
inta,m,k,i;
a=0;
for(i=101;i=200;i++)
{
for(k=2;ki;k++)
if(i%k==0)break;
if(k=i)
a++;
}
printf(“%d\n”,a);
for(i=101;i=200;i++)
{
for(k=2;ki;k++)
if(i%k==0)break;
if(k=i)
a++;
if(k=i)
printf(“%d”,i);
}
printf(“\n”);
return0;
}
C語言編程判斷m是否為素數
1、首先需要打開visual C++ 6.0,接着在裡面找到文件-新建-文件-C++ Source File選項,建設新文件。
2、接着需要在新建的頁面中輸入預處理命令和主函數:
#includestdio.h /*函數頭:輸入輸出頭文件*/
void main() /*空類型:主函數*/
3、為使函數正常運行,需要再定義變量並輸入一個數字,相關程序如下:
int m,i; /*定義變量的數據類型為整型*/
printf(“輸入一個數:”); /*輸出文字提示*/
scanf(“%d”,m); /*輸入一個數字*/
4、隨後需要使用for函數和if函數判斷是否是素數,具體程序如下:
for(i=2;i=m;i++) /*用for函數重複下面步驟*/
if(m%i==0) /*判斷輸入的數是否能被除1和本身以外的數整除*/
break;
if(im) /*判斷i是否大於m*/
printf(“%d 是素數\n”,m); /*輸出是素數*/
else
printf(“%d 不是素數\n”,m); /*輸出不是素數*/
5、輸入完整的源代碼,運行以後,就會在運行界面中顯示判斷結果。
#includestdio.h /*函數頭:輸入輸出頭文件*/
void main() /*空類型:主函數*/
{
int m,i; /*定義變量的數據類型為整型*/
printf(“輸入一個數:”); /*輸出文字提示*/
scanf(“%d”,m); /*輸入一個數字*/
for(i=2;i=m;i++) /*用for函數重複下面步驟*/
if(m%i==0) /*判斷輸入的數是否能被除1和本身以外的數整除*/
break;
if(im) /*判斷i是否大於m*/
printf(“%d 是素數\n”,m); /*輸出是素數*/
else
printf(“%d 不是素數\n”,m); /*輸出不是素數*/
}
求判斷素數的C語言程序
C語言-尋找素數
附代碼:
#includestdio.h
#includemath.h
int main()//原理:設ab=c,ab,則有a根號cb。若設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\n”, int(i));
n++;
sum = sum + i;
}
}
printf(“大於等於%d,小於等於%d的素數的個數為:%d\n”, a, b, n);
printf(“它們的和為:%d”, sum);
return 0;
}
用C語言如何判斷素數
按照如下步驟即可用C語言判斷素數:
1、首先打開visual C++ 6.0,然後點擊左上角的文件,再點擊新建。
2、然後在彈出的新建對話框中點擊C++Source File。
3、在新建的文件文本框中輸入預處理命令和主函數,即函數頭和空類型。
4、然後再定義變量並輸入一個數字,即定義變量的數據類型,輸出文字提示,再輸入一個數字。
5、然後用for函數和if函數判斷是否是素數。
6、點擊確定後即可成功創建剛剛新建的程序,隨機輸入一個數字即可驗證一下剛剛創建的C語言。
求C語言中 判斷素數的 代碼!!!!!
基本思想:把m作為被除數,將2—INT( )作為除數,如果都除不盡,m就是素數,否則就不是。
可用以下程序段實現:
void main()
{ int m,i,k;
printf(“please input a number:\n”);
scanf(“%d”,m);
k=sqrt(m);
for(i=2;ik;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;ik;i++)
if(m%i==0) return 0;
return 1;
}
擴展資料:
篩法求素數
一、基本思想
用篩法求素數的基本思想是:
把從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(N1;N為自然數)都不是素數。
#define range 2000
bool
IsPrime[range+1];
/*set函數確定i是否為素數,結果儲存在IsPrime[i]中,此函數在DEV
C++中測試通過*/
void set(bool IsPrime[])
{
int i,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大而沒有被刪除的數),一直到pqN為止。
因為每個非質數都只被刪除一次,可想而知,這個程序的速度一定相當快。依據Gries與Misra的文章,線性的時間,也就是與N成正比的時間就足夠了(此時要找出2N的質數)。
代碼如下:
#includeiostream
#includecmath
using namespace std;
int main()
{
int N; cinN;
int *Location=new int[N+1];
for(int i=0;i!=N+1;++i)
Location[i]=i;
Location[1]=0; //篩除部分
int p,q,end;
end=sqrt((double)N)+1;
for(p=2;p!=end;++p)
{
if(Location[p])
{
for(q=p;p*q=N;++q)
{
for(int k=p*q;k=N;k*=p)
Location[k]=0;
}
}
}
int m=0;
for(int i=1;i!=N+1;++i)
{
if(Location[i]!=0)
{
coutLocation[i]” “;
++m;
}
if(m%10==0) coutendl;
}
coutendlmendl;
return 0;
}
該代碼在Visual Studio 2010 環境下測試通過。
以上兩種算法在小數據下速度幾乎相同。
參考資料:百度百科-篩法求素數
編寫一個C語言程序判斷一個數是否是素數
目的:判斷一個數是否為素數
# include stdio.h
int main(void)
{
int m;
int i;
scanf(“%d”,m);
for(i = 2; i m; i++) //2到(m-1)的數去除m
{
if(m% i == 0) // 判斷能否整除
break;
}
if (i == m)
printf(“YES!\n”);
else
printf(“No!\n”);
}
for循環的功能:
①若能整除,通過break跳出函數;
②若一直到m-1都不能整除,此時i再自增1到m,不滿足i m跳出for循環,這時i = m。
擴展資料:
素數定理:
1、在一個大於1的數a和它的2倍之間(即區間(a, 2a]中)必存在至少一個素數。
2、存在任意長度的素數等差數列。
3、一個偶數可以寫成兩個合數之和,其中每一個合數都最多只有9個質因數。(挪威數學家布朗,1920年)。
4、一個偶數必定可以寫成一個質數加上一個合成數,其中合數的因子個數有上界。(瑞尼,1948年)。
5、一個偶數必定可以寫成一個質數加上一個最多由5個因子所組成的合成數。後來,有人簡稱這結果為 (1 + 5)(中國潘承洞,1968年)。
6、一個充分大偶數必定可以寫成一個素數加上一個最多由2個質因子所組成的合成數。簡稱為 (1 + 2)。
參考資料來源:百度百科-質數
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/245799.html