找素數c語言
⑴ 求"求素數的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;
}
(1)找素數c語言擴展閱讀:
質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。
基本演算法:若 k%m==0 則說明 k 不是素數。
判斷整數n是否為素數——採用枚舉法求解。
採用枚舉演算法解題的基本思路:
(1)確定枚舉對象、枚舉范圍和判定條件;
(2)枚舉可能的解,驗證是否是問題的解。
枚舉演算法的一般結構:while循環。
參考資料來源:網路-枚舉法
⑵ C語言判斷素數
1,首先了解素數的定義,一個大於1的自然數,除了1和它本身外,不能被其他自然數整除。2,以下是C語言程序。
#include"stdio.h"
intmain()
{
intn,flag=1,i;
scanf("%d",&n);//輸入一個數n,判斷它是否是素數。
for(i=2;i<n;i++)
{
if(n%i==0)//根據素數的定義n依次除以小於它本身大於1的數
flag=0;//一旦有能被整除的數,表明n不是素數,使得flag=0。
}
if(flag==0)//根據flag的值判斷n是否是素數
printf("%d不是素數",n);
else
printf("%d是素數",n);
return0;
}
⑶ 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;
}
(3)找素數c語言擴展閱讀:
1.素數的定義是只能被1和他本身整除,1不是素數.因此要判斷一個數是否為素數.就要判斷它能不能被比他小的所有素數整除,這是一個演算法.(寫到演算法時,我只能寫出用它除以比他小的所有數,造成運算速度低下)
2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法2較快的素數判斷演算法
⑷ 用C語言如何判斷素數
按照如下步驟即可用C語言判斷素數:
1、首先打開visual C++ 6.0,然後點擊左上角的文件,再點擊新建。
⑸ c語言怎麼求素數
在C語言中求素數有很多種方法。剛入門的話,最基本的就是根據素數的定義來判斷一個數是不是素數。要判斷一個數n是不是素數,就用一個循環,從2一直到n -1,如果都不能整除n,那麼n就是一個素數,否則就不是素數。
改進一點的方法就是只要判斷到n/2就可以了。再高效一點的辦法,就只要判斷到根號n就可以了。判斷的依據是相同的。
⑹ 如何求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語言中如何求素數
#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語言如何判斷素數
素數又稱質數,所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2~16 的任一整數整除。判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼 m 就是一個素數。
首先要知道素數是不等於1,它的因子只有1和它本身。判斷一個數是否為素數,可以用大於1小於給定數的所有數去除給定數,如果有任何一個能夠除盡,就表示是合數,反之是素數。
(8)找素數c語言擴展閱讀:
首先,本文英文字母都表示整數,上半部B 》3N 》W,下半部B 》W 》3N。大於3的素數只有6N-1和6N+1兩種形式,我們只需判定這兩種數是素數還是合數即可。
命題 1 對於B=36N+1 形數而言。
若不定方程(3N)^2+N-(B-1)/36=W^2 有整數解,
則 6(3N-W)+1 是小因子數;6(3N+W)+1 是大因子數。
若不定方程 (3N)^2-N-(B-1)/36=W^2 有整數解,
則 6(3N-W)-1 是小因子數;6(3N+W)-1 是大因子數。
兩式都無解,是素數。
⑼ c語言求素數
【例】判斷m是否素數。
N-S流程圖:
#include<math.h>
main()
{
int m,i,k;
scanf(「%d」,&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
printf(「%d is a prime number\n」,m);
else
printf(「%d is not a prime number\n」,m);
}
【例】求100至200間的全部素數。
#include<math.h>
main()
{
int m,i,k,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
{printf(「%d」,m);
n=n+1;}
if(n%5==0)printf(「\n」);
}
printf(「\n」);
}
⑽ C語言求素數
你的C語言求素數的程序我幫你改完了(僅兩處錯誤),你看看吧(改動的地方見注釋)
#include<stdio.h>
#include<math.h>
intmain()
{
intn,i=1;
intr;//這里floatr;改成intr;因為整數除以整數所得余數還是整數
printf("inputanumbern=");
scanf("%d",&n);
for(i=2;i<=n-1;)
{
r=n%i;
if(r==0)
{
printf("%d不是素數 ",n);
return0;
}
else
{
i=i+1;
if(i>sqrt(n))
{
printf("%d是素數 ",n);
return0;
}
//else//這里去掉else語句塊,因為如果i>sqrt(n)n就是素數,如果i<sqrt(n)應該讓程序自動執行下去
//{
//return(n);
//}
}
}
}