Ⅰ 用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>
intsushu(intz);/*函數聲明最好放在外面,放到文件前端*/
voidmain()
{
intb,a;
printf("enteradate: ");
scanf("%d",&b);
a=sushu(b);
if(a==0||b==0)
printf("no ");
else
printf("yes ");
}
intsushu(intz)
{
inti,j;/*i和返回值要分開,i要做循環標尺的*/
for(i=2;i<z;i++)
{
if(z%i==0)
{
j=0;
break;/*一旦發現不是素數,跳出for循環*/
}
else
j=1;/*如果用i,就是個死循環,如果是素數,每次你把i=1後for循環一直繼續*/
}
returnj;
}
Ⅳ c語言 求素數,要求調用函數
樓主的代碼看的真是讓我蛋疼,全局太多、函數定義和聲明參數都沒有類型、判斷是否素數居然返回double、printf用法錯誤...各種我就不說了,給你修改了一下,編譯運行成功,代碼如下:
#include<stdio.h>
bool prime(int x);
int main()
{
int m,n,count=0,i,sum=0;
scanf("%d",&m);
scanf("%d",&n);
for(i=m;i<=n;i++){
if(prime(i))
{
count++;
sum=sum+i;
}
}
printf("count=%d,sum=%d ",count,sum);
return 0;
}
bool prime(int x)
{
int a;
bool result = false;
for(a=2;a*a<=x;a++)
{
if(x%a==0)
break;
}
if(a*a>x)
result = true;
return result;
}
Ⅳ c語言求素數
樓上說的不對,其實不是什麼if-else語句的問題,本來就是應該for循環內運行if(a%i==0)語句的,return1;語句是在for循環外的,表示沒有找到a的約數時才return1;也即表示a為素數。這里沒什麼問題的,
問題存在於你的while語法:你寫的while(x<=100);注意你寫的while後面有個分號,其實這就已經構成一個while循環了。循環內容就是「;」表示什麼也不做,而循環條件是1<=100為真的,程序運行到這里就進入死循環。。。從而出現你所說的「程序沒有錯,可是運行之後除了『1到100之間的所有素數是:』這行字之外啥也沒有,」
只要刪除while(x<=100);後面的分號就可以了,即
#include<stdio.h>
intprime(int);
main()
{
intx;
printf("1到100之間的所有素數是:\n");
x=1;//這里最好是從2開始的,否則會出現1也是素數的結果。或者
//你在intprime(int);函數中單獨判斷一下參數為1的特殊情
//形。
while(x<=100)//這里不要分號。但do-while語句後面是有分號的
{
if(prime(x))
printf("%d",x);
x=x+1;
}
}
intprime(inta)
{
inti;
for(i=2;i<=a/2;i++)
if(a%i==0)
return0;
return1;
}
Ⅵ c語言函數求素數
#include<stdio.h>
#include<math.h>
void main()
{
int input_x,result;
printf("Please enter a INT number: ");
scanf("%d",&input_x);
result = prime_number(input_x);
printf("%d, ",input_x);
if(result)
{
printf("It is a prime number");
}
else
{
printf("It is 'not' a prime number");
}
}
prime_number(num)
{
int a,i,temp;
temp = 0;
a=sqrt(num);
for(i=2;i<=a;i++)
{
if(num%i==0)
{
temp = 1;
break;
}
}
if(temp == 0)
return 1;
return 0;
}
Ⅶ 用c語言編程序,用函數求素數,調用函數
#include<stdio.h>
#include<math.h>
//判斷是否為素數的函數
intisPrime(intn)
{
inti=2;
while(i<=(int)sqrt(n))
{
if(n%i==0)
return0;//不是素數,直接返回0
else
i++;
}
return1;
}
intmain()
{
intn,i;
printf("輸入一個正整數:");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
if(isPrime(i))//調用函數,如果該數為素數,則輸出
printf("%d",i);
}
printf(" ");
return0;
}
示例運行結果:
輸入一個正整數: 50
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
Ⅷ 用C語言寫一個調用函數,求出一個范圍內的素數,范圍自己輸入
#include<stdio.h>
#include<math.h>
intprime(inta,intb)//求出整數a-b范圍內的所有素數
{
inti=2,j,n;
for(j=a;j<=b;j++)
{
n=sqrt(j)+1;//j的平方數+1
i=2;
while(i<n)
{
if(j%i==0) //整除,退出循環
break;
i++;
}
if(i==n)//非整除退出循環,i肯定等於n
printf("%d",j); //j是素數,輸出
}
}
intmain()
{
inta,b;
scanf("%d%d",&a,&b);//輸入整數范圍a-b
prime(a,b);
return0;
}