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

求1到100內素數的個數c語言

發布時間: 2023-02-11 13:00:07

㈠ 用c語言編寫程序輸出1-100內的素數

用常規的判素性方法可如下實現
#include "stdio.h"
#include "math.h"
bool IsPrime(int x)
{
int i, s;
s = sqrt(x + 1);
for(i = 2; i <= s; i++)
if(x % i == 0) return false;
return true;
}
void main( )
{
int i;
for(i = 2; i < 100; i++)
if(IsPrime(i))
printf("%d ", i);
}
也可採用篩選法,篩選法效率會高一些,樓上的雖然也是篩選法,但他的效率卻並不高。篩選法的思路是將那些非素數篩掉,留下那些素數。命題「對於1<x<100的合數x, 必含有小於10的質因子」可以證明是真命題,它的逆反命題「對於1<x<100的數,如果不含有小於10的質因子,則它必為素數。」則也是真命題。因此篩除時,只要篩除含有10以內的質因子的數就可以了。下面給出篩選法的代碼。
#include "stdio.h"
void main( )
{
bool isprime[100];
int i, j;
isprime[0] = false;
isprime[1] = false;
for(i = 2; i < 100; i++) /*先初始化2~100的都是素數,然後將非素數篩除掉*/
isprime[i] = true;
for(i = 2; i < 10; i++) /*將所有含有小於10的質因子的數篩除掉*/
{
if(isprime[i]) /*如果i是素數,則將它的倍數全部篩掉*/
for(j = i * i; j < 100; j += i) /*從i*i開始檢測是因為小於i*i的合數都被小於i的素數篩除了*/
isprime[j] = false;
}
for(i = 2; i < 100; i++)
if(isprime[i])
printf("%d ", i);
}

㈡ 求1-100內的素數c語言編程

樓主 {} 使用有問題

要 把邏輯 理清楚

先畫框圖,再寫代碼

結果:

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

㈢ 用C語言編1到100之間的素數程序

程序及解釋如下:

首先判斷素數的演算法:用一個數分別去除以2到sqrt(這個數),如果能被整除, 則表明此數不是素數,反之是素數。

則有如下程序

{ int m,k,i;

for(m=1;m<=100;m=m+2) //m=m+2,因為偶數都不是素數,不用考慮,所以每次m+2.

{ k=sqrt(m) //先求這個數的平方跟

for(i=2;i<=k;i++) //然後用i(從2到k,即m的平方跟)去除m,

if(m%i==0) break; //如果能被整除, 則不是素數,break

if(i>=k+1) pritnf("%d",m); //如果i>k+1,則說明沒有數能整除m.則m是素數

}
}

(3)求1到100內素數的個數c語言擴展閱讀:

素數被利用在密碼學上,所謂的公鑰就是將想要傳遞的信息在編碼時加入質數,編碼之後傳送給收信人,任何人收到此信息後,若沒有此收信人所擁有的密鑰,則解密的過程中(實為尋找素數的過程),將會因為找質數的過程(分解質因數)過久,使即使取得信息也會無意義。

在汽車變速箱齒輪的設計上,相鄰的兩個大小齒輪齒數設計成質數,以增加兩齒輪內兩個相同的齒相遇嚙合次數的最小公倍數,可增強耐用度減少故障。

在害蟲的生物生長周期與殺蟲劑使用之間的關繫上,殺蟲劑的質數次數的使用也得到了證明。實驗表明,質數次數地使用殺蟲劑是最合理的:都是使用在害蟲繁殖的高潮期,而且害蟲很難產生抗葯性。

以質數形式無規律變化的導彈和魚雷可以使敵人不易攔截。

多數生物的生命周期也是質數(單位為年),這樣可以最大程度地減少碰見天敵的機會。

參考資料:網路 素數



㈣ 用C語言,判斷1-100之間有多少個素數,並輸出所有素數。

可以使用篩法來判斷 1-100 之間有多少個素數,並輸出所有素數。篩法是一種通過枚舉合數的因子來篩選出素數的方法。

下面是用 C 語言實現的代碼示例:

#include <stdio.h>
#include <stdbool.h>

#define N 100

int main(void)
{

// 創建一個 bool 類型的數組,用來存儲每個數是否為素數
bool prime[N + 1];


// 初始化數組,假設所有數都是素數
for (int i = 0; i <= N; i++)
prime[i] = true;

// 使用篩法篩選出素數
for (int i = 2; i <= N; i++)
{
// 如果 i 不是素數,則跳過
if (!prime[i])
continue;

// 輸出 i
printf("%d ", i);

// 將 i 的倍數標記為合數
for (int j = i * i; j <= N; j += i)
prime[j] = false;
}

return 0;

}


運行結果如下:

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

在這個程序中,使用了一個 bool 類型的數組來存儲每個數是否為素數。使用篩法篩選出 1-100 之間的素數,並輸出每個素數。

需要注意的是,C 語言沒有內置的 bool 類型,需要使用頭文件 stdbool.h 來支持 bool 類型。在上面的代碼中,需要包含頭文件 stdio.h 和 stdbool.h。

㈤ 用c語言:輸出在1~100內的所有素數

#include<stdio.h>

#include<math.h>

intmain()

{

intn;

inti;

intflag=0;

for(n=2;n<=100;n++)

{

flag=0;

for(i=2;i<=sqrt(n);i++)

{

if(n%i==0)

{

flag=1;

break;

}

}

if(flag==0)

printf("%d",n);

}

return0;

}

(5)求1到100內素數的個數c語言擴展閱讀

C語言判斷素數

#include<stdio.h>

intmain()

{

inti,j;

intm,n,p;

for(i=11;i<1000;i++)

{

if(i>=11&&i<=99)

{

m=i%10;

n=i/10;

}

else

{

m=i/100;

n=i%10;

}

if(m==n)

{

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

if(i%j==0)

break;

if(j>=i/2)

{

printf("%d",i);

}

}

}

return0;

}

㈥ 怎樣用C語言統計1到100之間素數的個數

#include <stdio.h>
#include <math.h>

int main(void)
{
int i,j,cnt=0;
int max = 0;

for (i = 2; i<=100; i++)
{
max = sqrt((double)i)+1;
for (j = 2; j<max; j++)
{
if (i % j == 0)
{
break;
}
}
if (j >= max)
{
cnt++;
}
}

printf("cnt=%d\n",cnt);

return 0;
}

㈦ 用C語言求解1-100之間的所有素數。

Action()

{

int i,j;

int sum=0;

int flag;//是否為素數

for(i=2;i&lt;=100;i++){

flag=1;

for(j=2;j&lt;=i-1;j++){

if(i%j==0){

flag=0;

break;

}

}

if(flag==1){

sum+=i;

}

}

lr_output_message("sum=%d",sum);

return 0;

}

輸出的結果:sum=1060

(7)求1到100內素數的個數c語言擴展閱讀:

方法二、使用函數:

Action()

{

int i;

int sum=0;

for(i=2;i&lt;=100;i++){

if(isPrime(i)){

sum+=i;

}

}

lr_output_message("素數之和sum=%d",sum);//loadrunner的輸出,其他編譯器可能是printf

return 0;

}

int isPrime(a){

int j;

int flag=1;

for(j=2;j&lt;=a-1;j++){

if(a%j==0){

flag=0;

break;

}

}

return flag;

}