基本思想:把m作為被除數(shù),將2—INT()作為除數(shù),如果都除不盡,m就是素數(shù),否則就不是。
網(wǎng)站建設哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了宜春免費建站歡迎大家使用!
可用以下程序段實現(xiàn):
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("該數(shù)是素數(shù)");
else
printf("該數(shù)不是素數(shù)");
}
將其寫成一函數(shù),若為素數(shù)返回1,不是則返回0
intprime(m%)
{inti,k;
k=sqrt(m);
for(i=2;ik;i++)
if(m%i==0)return0;
return1;
}
擴展資料:
100-200之間的素數(shù)的個數(shù),以及所有的素數(shù)
#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語言中沒有bool類型,默認返回值是0,你可以一個一個類型的函數(shù)檢測、float,沒有返回值時、double類型的函數(shù),你這個程序不只是邏輯不能那樣說,但是如果是long或者char型時,返回值就不是0了,如果是返回值int。
另外多說一句、算法錯了
/判斷是不是素數(shù)
#includestdio.h
int prime(int a);//函數(shù)聲明
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;ia;i++)
if(a%i==0)
return 0;//a%i==0不成立
else
return 1;//a%i==0成立
}
擴展資料:
素數(shù)的算法
1、素數(shù):除了1和本身外無法被其他自然數(shù)整除的數(shù),叫做素數(shù),也稱質(zhì)數(shù),如:2,3,5,7一系列。
2、合數(shù):比1大但不是素數(shù)的數(shù)稱為合數(shù),如:8,9,10一系列。
3、特殊的數(shù)字:1和0既不是素數(shù)也不是合數(shù)。
4、算法:? 1確定性算法? ?2隨機性算法? 3Eratosthenes算法。
1、首先需要打開vs軟件工程,準備好一個空白的C語言文件,引入頭文件,主函數(shù)中暫時沒有內(nèi)容:
2、這里開始編寫代碼,這里判斷素數(shù)需要用到平方根,所以要在頭文件中引入math庫,然后編寫判斷素數(shù)的函數(shù),函數(shù)有唯一的參數(shù)n,代表素數(shù)。判斷的依據(jù)是素數(shù)n只要不能被 2 到根號下n之 間任一整數(shù)整除,則n必定是素數(shù),最后在主函數(shù)中調(diào)用判斷素數(shù)的函數(shù)即可:
3、最后,編譯運行程序,在彈出的命令行中輸入17這個素數(shù),程序的打印結(jié)果是17是素數(shù),證明了程序的正確性。以上就是用C語言判斷素數(shù)的流程:
方法一:
#include<stdio.h>
int main(){
int i,j;
printf("請輸入一個正整數(shù)。\n");
scanf("%d",&i);
if(i<2)
printf("小于2,請重新輸入。\n");
elseif(i%2==0)
printf("%d不是一個素數(shù)。\n",i);
else{
for(j=2;j<=i/2;j++){
if(i%j==0){
printf("%d不是一個素數(shù)。\n",i);
break;
}
if(j>i/2){
printf("%d是一個素數(shù)。\n",i);
break;
}
}
}
}
方法二:
#include<stdio.h>
int main(){
int a=0;
int num=0;
scanf("%d",&num);
for(inti=2;i<num-1;i++){
if(num%i==0){
a++;
}
}
if(a==0){
printf("YES\n");
}else{
printf("NO\n");
}
}
方法三:
#include"stdio.h"
int main(){
printf("\t\t\t\t\thelloworld\n");
int a,i;
do{
printf("inputnumberjudgeprimenumber:\n");
scanf("%d",&a);
for(i=2;i<a;i++)
if(a%i==0)break;
if(i==a)
printf("%d是素數(shù)\n",a);
else
printf("%d不是素數(shù)\n",a);
}while(a?。?);
}
素數(shù)又稱質(zhì)數(shù),所謂素數(shù)是指除了 1 和它本身以外,不能被任何整數(shù)整除的數(shù),例如17就是素數(shù),因為它不能被 2~16 的任一整數(shù)整除。
思路1、判斷一個整數(shù)m是否是素數(shù),只需把 m 被 2 ~ m-1 之間的每一個整數(shù)去除,如果都不能被整除,那么 m 就是一個素數(shù)。
思路2、判斷方法還可以簡化。
m 不必被2~m-1之間的每一個整數(shù)去除,只需被2~√m之間的每一個整數(shù)去除就可以了。如果 m 不能被2~√m?間任一整數(shù)整除,m必定是素數(shù)。例如判別17是是否為素數(shù),只需使17被2~4之間的每一個整數(shù)去除,由于都不能整除,可以判定17是素數(shù)。
原因:因為如果m能被2~m-1之間任一整數(shù)整除,其二個因子必定有一個小于或等于√m,另一個大于或等于√m。
例如16能被2、4、8整除,16=2*8,2小于 4,8大于4,16=4*4,4=√16,因此只需判定在2~4之間有無因子即可。
兩種思路的代碼請看解析。
拓展資料:
素數(shù)(prime number)又稱質(zhì)數(shù),有無限個。素數(shù)定義為在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)。
C語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產(chǎn)生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設計語言。
參考資料:
百度百科——素數(shù)
百度百科——C語言