當前位置:首頁 » 編程語言 » c語言尋找雙質數總結心得
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言尋找雙質數總結心得

發布時間: 2022-12-21 04:17:22

⑴ 請把你們所知道的c語言中找質數的演算法都編出來告訴我,拜託了!

//以前朋友寫的一段C的,效率很高,我自己寫的不及他
//Problem: Prime Ring Problem
//00:00.71 436K
//戴帽子的 2004-04-22
//=============================
#include <iostream>
#include <ctime>
#include <fstream>

using namespace std;

/*
#define cout out

ofstream fout("time.txt");
ofstream fin("hziee.txt");

ostream& out = fin;
ostream& timeout = fout;
*/
ofstream fin("hziee.txt");
int kase;
bool P[21][21];
short in[21];
short result[20];
short N;

bool Prime(int n)
{
int i;
for(i=2; i<n; i++) {
if(n%i==0)
return false;
}
return true;
}

void initial()
{
int i,j;

kase = 0;

for(i=1; i<21; i++){
for(j=i; j<21; j++) {
P[i][j] = Prime(i+j);
P[j][i] = P[i][j];
}
}
}

void Print()
{
int i;
for(i=0; i<N-1; i++)
fin<<result[i]<<" ";
fin<<result[i]<<endl;
}

void hziee(int k)
{
int i;
if(k == N)
{
if(P[result[0]][result[N-1]])
Print();
return;
}
for(i=result[k-1]%2 + 1; i<=N; i += 2) {
if(in[i])
continue;
if(P[result[k-1]][i]) {
result[k] = i;
in[i] = true;
hziee(k+1);
in[i] = false;
}
}
}

int main()
{
int i;
clock_t start, end, start1, end1;
start = clock();

initial();

end = clock();
cout<< double(end - start) / CLK_TCK <<endl;

in[1]=true;
result[0]=1;
cin>>N;

start1 = clock();

fin<<"Case "<<++kase<<":"<<endl;
for(i=2; i<=N; i++)
in[i] = false;
if(N%2 == 0)
hziee(1);
fin<<endl;

end1 = clock();
fin<< double(end1 - start1) / CLK_TCK <<endl;

return 0;
}

⑵ C語言質數的問題,求詳解

判斷質數嘛,方法就是對2到本身-1取余,為0的就不是質數了
比如12,12取餘2為0,不是質數
13取餘2,3,4,5,...到12都為1,為質數
其實從7到12的判斷是多餘的,只要判斷到13/2=6就可以了.
懂了嗎,後一個for循環只是跳過多餘的判斷,沒有也一樣

⑶ c語言中,為一個偶數尋找兩個素數,這兩個素數之和等於該偶數,並將這兩個素數通過形參指針傳回主函數。

這里開始的y=1,是預定的判別,然後在各個循環里選擇y的值,從而判斷和為a的兩個數b,c是否為質數,倘若y不變,則該數是質數。
d=a-i就是表示的和為a的另一個數,為了對此變數表達更清晰,採用差來表示,最後還是賦值給了c,不是嗎?自己再看看就明白了

⑷ 標准C語言查找質數問題,求質數的問題,請看如下

幫你現寫了一個程序如下:

#include<stdio.h>
intmain()
{
intM,N,cnt=0;
ints[100]={0};
printf("請輸入兩個整數:");
scanf("%d,%d",&M,&N);
for(inti=M;i<=N;i++)
{
intt=0;
for(intj=1;j<=i;j++)
{
if(i%j==0)
t++;
}
if(t==2)
{
s[cnt]=i;
cnt++;
}
}
printf("%d到%d之間總共有%d個素數,分別如下: ",M,N,cnt);
for(intk=0;k<cnt;k++)
printf("%d ",s[k]);
printf(" ");
return0;
}

運行結果如下:

⑸ 關於C語言找質數

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

void main()
{
int i, j, n, l, m = 0;

printf("你需要小於多少的質數:\t");
scanf("%d", &n);

for(i = 2; i < n; i++)
{
l = 1;
for(j = 2; j <= sqrt((double)i); j++)
{
if(i % j == 0){l = 0; break;}
}
if(l == 1){
printf("%d ", i);
m++;
}
}
printf("一共有%d個這樣的樹", m);
}

⑹ C語言找素數(質數)while語句

給出代碼如下:
#include<stdio.h>
int main()
{
int i=2,n;
printf("請輸入一個數:");
scanf("%d",&n);
while(n%i!=0&&i<n)//給出i<n方便理解while的變化
{
i++;//當n%i!=0時進行循環;
}
if(i<n)//在2至n中已經遍歷完了。
printf("不是質數");
else
printf("是質數");
return 0;
}

⑺ 問C語言中 輸入兩個數字 求其中的質數 求演算法

BOOL IsPrime(int integer)//素數判斷
{
int i=2;
int j=(int)sqrt(integer);
while(TRUE)
{
if(integer%i==0)
{
return FALSE;
}
i++;
if(i>j)
{
break;
}
}
return TRUE;
}