本文目錄一覽:
- 1、請把你們所知道的C語言中找質數的算法都編出來告訴我,拜託了!
- 2、關於C語言找質數
- 3、c語言~找質數的問題~
- 4、用C語言編寫求質數的程序
- 5、如何用窮舉法在1—100之間找出所有的質數用C語言編程實現
- 6、用C語言找出2—100的以內所有的質數。
請把你們所知道的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; in; i++) {
if(n%i==0)
return false;
}
return true;
}
void initial()
{
int i,j;
kase = 0;
for(i=1; i21; i++){
for(j=i; j21; j++) {
P[i][j] = Prime(i+j);
P[j][i] = P[i][j];
}
}
}
void Print()
{
int i;
for(i=0; iN-1; i++)
finresult[i]” “;
finresult[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;
cinN;
start1 = clock();
fin”Case “++kase”:”endl;
for(i=2; i=N; i++)
in[i] = false;
if(N%2 == 0)
hziee(1);
finendl;
end1 = clock();
fin double(end1 – start1) / CLK_TCK endl;
return 0;
}
關於C語言找質數
#includestdio.h
#includemath.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語言~找質數的問題~
明白了你的思路 可是按你的思路 你自己的算法有問題 我改了下你可以參考下 算法不是唯一的,你可以看看其他的算法 會比這個簡單:)
從for循環開始改的
for(i=2;i=limit;i++)
{
while((j=i))
{
if(i%j == 0)//要用if 不然算法不對
{
sum = sum + j;
}
j=j+1;//要在這裡,可以確保不進入死循環
}
if (sum==i)
{
printf(“Sum of divisors for %d is %d\n”, i, sum);
}
sum=0;//sum要清零
j=2;//j要清零
}
return 0;//應該返回個值 你定義的是int main()
}
用C語言編寫求質數的程序
//我分別寫出了求素數和判斷素數的程序
/*
//判斷一個數是否為素數
#includestdio.h
#includemath.h
int isprime(int);
void main()
{
int inumber;
printf(“請輸入一個非負整數: “);
scanf(“%d”,inumber);
if(isprime(inumber))
printf(“%d是素數!\n”,inumber);
else
printf(“%d不是素數!\n”,inumber);
}
int isprime(int a)
{
int i;
for(i=2;i=sqrt(a);i++)
if(a%i==0)
return 0;
return 1;
}
*/
/*****************************************************/
//求某個正整數以內的素數
#include”stdio.h”
#include”math.h”
int main(void)
{
int count,i,m,n,num;
printf(“請輸入所求範圍(正整數): “);
scanf(“%d”,num);
count=0;//count記錄素數的個數
printf(“%d以內的素數為:\n”,num);
for(m=2;m=num;m++)
{
n=sqrt(m);
for(i=2;i=n;i++)
{
if(m%i==0)
break;
}
if(in)//如果m是素數
{
printf(“%6d”,m);
count++;
if(count%10==0)//count為10的倍數時換行
printf(“\n”);
}
}
printf(“\n”);
return 0;
}
如何用窮舉法在1—100之間找出所有的質數用C語言編程實現
對1-100的所有數進行遍歷,逐一判斷每個數是否為素數。
判斷素數的算法有很多,比較基礎的是逐一求余,如果除了1和本身外,還有其它數可以整除那麼就不是素數。
代碼如下:
#include stdio.h
int main()
{
int i, j;
for(i = 2; i 100; i ++)
{
for(j = 2; j i; j ++)
{
if(i%j==0) break; //可以整除, 退出循環。代表不是素數。
}
if(j == i)//沒有提前退出循環,代表是素數,打印。
printf(“%d,”, i); //打印i值。
}
return 0;
}
用C語言找出2—100的以內所有的質數。
使用循環結構,除了2以外的偶數直接排除掉,因為不可能是質數,for(i=3;i=100;i=i+2){for(m=2;m=i;m++)下面的就自己進行判斷吧,用i求余m,如果餘數為0就說明不是,其餘的自己想吧,編程這個東西還是要靠自己
原創文章,作者:JRSZ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/132242.html