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

c語言素數判定

發布時間: 2022-04-15 19:45:24

『壹』 如何用c語言判斷一個數是不是素數

判斷一個整數m是否是素數,只需把m被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼m就是一個素數。思路1)的代碼:

#include <stdio.h>

int main(){

int a=0; // 素數的個數

int num=0; // 輸入的整數

printf("輸入一個整數:");

scanf("%d",&num);

for(int i=2;i<num;i++){if(num%i==0){a++; // 素數個數加1}}

if(a==0){printf("%d是素數。 ", num);}else{printf("%d不是素數。 ", num);}return 0;}

『貳』 如何用c語言編程判斷一個數是不是素數

方法一:

#include<stdio.h>

int main(){

int i,j;

printf("請輸入一個正整數。\n");

scanf("%d",&i);

if(i<2)

printf("小於2,請重新輸入。\n");

elseif(i%2==0)

printf("%d不是一個素數。\n",i);

else{

for(j=2;j<=i/2;j++){

if(i%j==0){

printf("%d不是一個素數。\n",i);

break;

if(j>i/2){

printf("%d是一個素數。\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是素數\n",a);

else

printf("%d不是素數\n",a);

}while(a!=0);

『叄』 C語言中素數判斷

★試除法首先要介紹的,當然非"試除法"莫屬啦。考慮到有些讀者是菜鳥,稍微解釋一下。
"試除",顧名思義,就是不斷地嘗試能否整除。比如要判斷自然數
x
是否質數,就不斷嘗試小於
x
且大於1的自然數,只要有一個能整除,則
x
是合數;否則,x
是質數。
顯然,試除法是最容易想到的思路。不客氣地說,也是最平庸的思路。不過捏,這個最平庸的思路,居然也有好多種境界。大夥兒請看:
◇境界1在試除法中,最最土的做法,就是:
假設要判斷
x
是否為質數,就從
2
一直嘗試到
x-1。這種做法,其效率應該是最差的。如果這道題目有10分,按照這種方式做出的代碼,即便正確無誤,俺也只給1分。
◇境界2稍微聰明一點點的程序猿,會想:x
如果有(除了自身以外的)質因數,那肯定會小於等於
x/2,所以捏,他們就從
2
一直嘗試到
x/2
即可。
這一下子就少了一半的工作量哦,但依然是很笨的辦法。打分的話,即便代碼正確也只有2分
◇境界3再稍微聰明一點的程序猿,會想了:除了2以外,所有可能的質因數都是奇數。所以,他們就先嘗試
2,然後再嘗試從
3
開始一直到
x/2
的所有奇數。
這一下子,工作量又少了一半哦。但是,俺不得不說,依然很土。就算代碼完全正確也只能得3分。
◇境界4比前3種程序猿更聰明的,就會發現:其實只要從
2
一直嘗試到√x,就可以了。估計有些網友想不通了,為什麼只要到√x
即可?
簡單解釋一下:因數都是成對出現的。比如,100的因數有:1和100,2和50,4和25,5和20,10和10。看出來沒有?成對的因數,其中一個必然小於等於100的開平方,另一個大於等於100的開平方。至於嚴密的數學證明,用小學數學知識就可以搞定,俺就不啰嗦了。
◇境界5那麼,如果先嘗試2,然後再針對
3
到√x
的所有奇數進行試除,是不是就足夠優了捏?答案顯然是否定的嘛?寫到這里,才剛開始熱身哦。
一些更加聰明的程序猿,會發現一個問題:嘗試從
3
到√x
的所有奇數,還是有些浪費。比如要判斷101是否質數,101的根號取整後是10,那麼,按照境界4,需要嘗試的奇數分別是:3,5,7,9。但是你發現沒有,對9的嘗試是多餘的。不能被3整除,必然不能被9整除......順著這個思路走下去,這些程序猿就會發現:其實,只要嘗試小於√x的
質數
即可。而這些質數,恰好前面已經算出來了(是不是覺得很妙?)。

希望採納

『肆』 用C語言如何判斷素數

按照如下步驟即可用C語言判斷素數:

1、首先打開visual C++ 6.0,然後點擊左上角的文件,再點擊新建。

『伍』 判斷素數的c語言程序是什麼

基本思想:把m作為被除數,將2—INT()作為除數,如果都除不盡,m就是素數,否則就不是。

可用以下程序段實現:

voidmain()

{intm,i,k;

printf("pleaseinputanumber: ");

scanf("%d",&m);

k=sqrt(m);

for(i=2;i<k;i++)

if(m%i==0)break;

if(i>=k)

printf("該數是素數");

else

printf("該數不是素數");

}

將其寫成一函數,若為素數返回1,不是則返回0

intprime(m%)

{inti,k;

k=sqrt(m);

for(i=2;i<k;i++)

if(m%i==0)return0;

return1;

}

(5)c語言素數判定擴展閱讀:

100->200之間的素數的個數,以及所有的素數

#include<stdio.h>

#include<math.h>

intmain()

{

inta,m,k,i;

a=0;

for(i=101;i<=200;i++)

{

for(k=2;k<i;k++)

if(i%k==0)break;

if(k>=i)

a++;

}

printf("%d ",a);

for(i=101;i<=200;i++)

{

for(k=2;k<i;k++)

if(i%k==0)break;

if(k>=i)

a++;

if(k>=i)

printf("%d",i);

}

printf(" ");

return0;

}

『陸』 C語言判斷素數

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
int prime(int x){
for(int i=2;i<x;i++){
if(x%i==0)
return 0;
}
return 1;
}
int main(){
int a=0; // 素數的個數
int num[9]; // 輸入的整數
int numl[9]={0};
printf("輸入10個整數:\n");
cfu:
//有個小BUG需要輸入11個數,最後一個不算入計算之內。
for(int i = 0;i < 10;i++){
scanf("%d\n",&num[i]);
}
for (int i = 0;i < 10;i++)
{
if (num[i] >= 50 && num[i] <= 2000)
{
//判斷是不是素數;
if(prime(num[i])==1){
printf("%d 不是素數\n",num[i]);
}
else{
printf("%d 是素數\n",num[i]);
numl[a++] = num[i];
}
}else{
printf("請輸入50到2000之間的數\n");
goto cfu;
}
}
//排序寫在這里就可以了。
int lenth = a;
cout << "長度為: "<< lenth << endl;
for (int i = 0;i < lenth-1;i++)
{
for (int j = 0;j < lenth-1-i;j++)
{
if (numl[j] < numl[j+1] )
{
int temps = numl[j];
numl[j] = numl[j+1];
numl[j+1] = temps;
}
}
}
for (int i=0;i<lenth;i++)
{
printf("%d ",numl[i]);
}
while(1);
return 0;
}
//好像看錯題了,我的是輸入10個數判斷是否是素數,,,,,
//這個重新寫了一個,就符合題的意思了,你想輸出其他的素數就自己加條件,當成拓展就可以了.
#include "stdafx.h"
#include <iostream>
using namespace std;
int prime(int x){
for(int i= 2;i< x ; i++){
if(x%i == 0)
return 0;
}
return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
int m,k=0;
int arr[2000]={0};
printf("輸入50到2000之間的整數: ");
cfu:
scanf("%d",&m);
if (m >= 50 && m <= 2000)
{
//判斷在m以內有素數
for (int i =2;i < m; i++)
{
if (prime(i)==1){
printf("%d 是素數\n",i);
arr[k++]= i;
if (k == 10)
{
break;
}
}else{
printf("%d 不是素數\n",i);

}
}

}else{
printf("輸入50到2000之間的整數");
goto cfu;
}
cout << "K的值: "<< k << endl;
for (int i = 0;i < k-1;i++)
{
for (int j = 0;j < k-1-i;j++)
{
if (arr[j] < arr[j+1] )
{
int temps = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temps;
}
}
}
printf("10個數排序:");
for (int i = 0;i< k; i++)
{
printf("%d ",arr[i]);
}
while(1);
return 0;
}

『柒』 如何用c語言寫出判斷一個數是不是素數

判斷一個整數m是否是素數,只需把m被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼m就是一個素數。思路1)的代碼:

#include <stdio.h>

int main(){

int a=0; // 素數的個數

int num=0; // 輸入的整數

printf("輸入一個整數:");

scanf("%d",&num);

for(int i=2;i<num;i++){if(num%i==0){a++; // 素數個數加1}}

if(a==0){printf("%d是素數。 ", num);}else{printf("%d不是素數。 ", num);}return 0;}