當前位置:首頁 » 編程語言 » 判斷一個數為質數最優演算法c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

判斷一個數為質數最優演算法c語言

發布時間: 2022-06-07 10:47:31

1. c語言演算法中,判斷一個數是素數要程序

/*To judge whether a number 'n' is prime number or not*/
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,k,prime=1;

do
{
printf("Please input a positive number:\nn=");
scanf("%d",&n);
}while(n<=0);

if(1==n)
prime=0;

k=(int)sqrt(n);

for(i=2;prime&&i<=k;i++)
if(0==n%i)
prime=0;

if(prime)
printf("%d is a prime number.\n",n);
else
printf("%d is not a prime number.\n",n);

return 0;
}

2. C語言判斷一個數是否是質數

根據質數的定義,在判斷一個數n是否是質數時,只要用1至n-1去除n,看看能否整除即可。
還有更好的辦法:先找一個數m,使m的平方大於n,再用小於等於m的質數去除n(n為被除數),如果都不能整除,則n必然是質數。如我們要判斷1993是不是質數,50*50>1993,那麼只要用1993除以<50的質數看是否能整除,若不能即為質數。100以內的質數有25個,還是比較好記的,只要記熟100以內質數,就可以快速判斷10000以內的數是不是質數。
100以內的質數有2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97,在100內共有25個質數。

只有1和它本身兩個因數的自然數,叫質數(或稱素數)。(如:由2÷1=2,2÷2=1,可知2的因數只有1和它本身2這兩個約數,所以2就是質數。與之相對立的是合數:「除了1和它本身兩個因數外,還有其它因數的數,叫合數。」如:4÷1=4,4÷2=2,4÷4=1,很顯然,4的因數除了1和它本身4這兩個因數以外,還有因數2,所以4是合數。)

3. c語言判斷一個數是否為質數

#include<stdio.h>
int main()
{
int i, n;
while (scanf("%d", &n) != EOF)
{
for (i = 2; i < n; i++)
if (n % i == 0)
break;
if (i >= n&&n>1)
printf("%d是質數\n", n);
else
printf("%d不是質數\n", n);
}
return 0;
}

4. C語言編程:判斷某數是否是質數

#include<stdio.h>
int main(int argc,int argv[]){
int a,flag;
scanf("%d",&a);/*輸入一個數進行判斷是否是質數*/
int isprime(int);/*這里是對將要調用的函數聲明一下*/
flag=isprime(int);
if(flag==1) printf("%d is isprime",a);
printf("%d is not isprime",a):
return 1;/*這里的語句代表調用函數成功*/
}
int isprime(int a){ /*功能函數,判斷是否是素數*/
int i;
for(i=2;i<=a/2;i++)
if(a%i==0) return 0;/*只要有一次相除為0,馬上就能判斷不是素數*/
return 1;/*否則經過循環之後,都沒有相除為0呢,就說明一定是素數了*/
}
看到這里是不是有點疑惑了呢?我到網路查了一下,質數也稱素數,你注意看就好。。不懂再追問。。
不過我想你看完之後你應該能明的了,我已經寫得好詳細了啦。。。。

5. c語言如何判斷素數

素數又稱質數,所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2~16 的任一整數整除。判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼 m 就是一個素數。

首先要知道素數是不等於1,它的因子只有1和它本身。判斷一個數是否為素數,可以用大於1小於給定數的所有數去除給定數,如果有任何一個能夠除盡,就表示是合數,反之是素數。

(5)判斷一個數為質數最優演算法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 是大因子數。

兩式都無解,是素數。

6. 如何用c語言編寫出判斷一個數是否為質數的程序

#include <stdio.h>
#include <math.h>
//n不能夠被不大於根號n的任何素數整除,則n是一個素數
//以下代碼計算1000以內所有素數
int main()
{
int i,j,n = 1000,sq;

for(i = 2;i < n;i ++)
{
sq = sqrt(i);
for(j = 2;j <= sq;j ++)
{
if(!(i % j))
break;
}
if(sq < j)
printf("%4d",i);
}
putchar('\n');
return 0;
}

7. c語言中如何判斷一個數是否是質數

#include "stdio.h"
void main()
{
int a;
int i;
int flag=0; //用於標注能被整除的次數
printf("請輸入一個整數:");
scanf("%d",&a); //要輸入的整數
for (i=1;i<=a;i++) {
flag=1;
//如果 a 能被 i 整除,那麼flag自加1
if (a%i==0) {
flag++;
}
}
//如果一個整數是質數,那麼只有被1和它本身整除,所以只有2,如果超過2,那麼肯定不是質數
if (flag==2) {
printf("你輸入整數為質數。");
} else {
printf("你輸入整數不為質數。");
}
}

8. 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;

}

(8)判斷一個數為質數最優演算法c語言擴展閱讀:

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

2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法2較快的素數判斷演算法

9. c語言求質數的演算法,講方法也行,不要那種on2的演算法

http://blog.csdn.net/liukehua123/article/details/5482854
這個地方介紹了兩種判斷素數的演算法,希望可以幫到你。

10. c語言怎麼判斷一個數是素數

不要拍照,直接代碼上來看吧。。。。看不清。。。