當前位置:首頁 » 編程語言 » c語言求素數iu003en
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言求素數iu003en

發布時間: 2022-04-17 07:18:31

『壹』 c語言中如何求素數

思路:所謂素數是指只能被1和自身整除的數叫作素數,判斷素數就可以從2到該數減一依次判斷能否整除該數,如果能則不是素數,否則就是素數。

參考代碼:

#include<stdio.h>
intisp(intn)//判斷是否是素數,是返回1,否則返回0
{
inti;
for(i=2;i<n;i++)
if(n%i==0)return0;
return1;
}
intmain()
{
inta;
scanf("%d",&a);
if(isp(a))
printf("%d是素數 ",a);
else
printf("%d不是素數 ",a);
return0;
}
/*
輸出:
89
89是素數
*/

『貳』 c語言怎麼求素數

在C語言中求素數有很多種方法。剛入門的話,最基本的就是根據素數的定義來判斷一個數是不是素數。要判斷一個數n是不是素數,就用一個循環,從2一直到n -1,如果都不能整除n,那麼n就是一個素數,否則就不是素數。
改進一點的方法就是只要判斷到n/2就可以了。再高效一點的辦法,就只要判斷到根號n就可以了。判斷的依據是相同的。

『叄』 求"求素數的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;

}

(3)c語言求素數iu003en擴展閱讀:

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

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

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

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

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

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

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

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




『肆』 c語言 求素數的演算法!!!(要更快點的方法)

我有個慢的演算法
int isPrime(int n)
{
int i, divide;

i = 1;
divide = 0;
while (i <= n) {
if (n % i == 0) divide++;
i++;
}
return (divide == 2);
}
稍快一點的辦法
int isPrime(int n)
{
int i, temp;

for (i = 2, temp = (int)sqrt(n); i <= temp;i++) {
if ( n % i == 0) return 0;
}
return 1;
}

『伍』 C語言求素數

#include<stdio.h>
#include<math.h>
voidmain()
{
intx=100,d=999,a,i,temp;

for(x;x<=d;x++)
{
temp=0;
a=sqrt(x);
for(i=2;i<=a;i++)
{

if(x%i==0)
{
temp=1;
break;
}
}

if(temp==0)
printf("%d",x);
}
}

『陸』 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語言求素數iu003en擴展閱讀:

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

2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法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語言程序!

素數,也叫質數,就是指除了1和該數本身以外,不能被其他任何整數整除的正數。

#include<stdio.h>#include<math.h>voidmain(){intm,k,i,n=0;for(m=1;m<=200;m=m+2){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1){printf("%5d",m);n=n+1;

『玖』 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;
}