求素數演算法
A. 求100以內的素數的演算法
談不上演算法:
#include<iostream>
using namespace std;
int main()
{
int a,b,c,ipt;
for (c=1;c>0;c++)
{
do
{
cout<<"請輸入你所想要的大於一的素數范圍:";
cin>>ipt;
} while (ipt<=1);
for (a=2;a<=ipt;a++)
{
for (b=2;b<=a;b++)
{
if (a%b==0)
{
break;
}
}
if (a==b)
{
cout<<a<<"\t";
}
}
cout<<endl;
}
return 0;
}
B. 一個求素數的演算法
t從0到cap^2-1
i從0到cap-1
j從0到i
實際上這里cap起的作用僅僅為了使i和j滿足:i從0到cap-1,j從0到i
實際上composite為j從2到i-1時整除i的個數
當j=0時,使composite重置為0
當j=i時,開始判斷
每次j能整除i,composite則增加1,到時就不會輸出i
當2到i-1的j都不整除i,此時i為素數,composite為0,可以將其輸出
希望你能看明白
不懂的話
還可以問的
一般晚上十點我都有空
C. 求素數的最簡便的演算法程序
S1:定義2個變數N
R
S2:N=1
S3:輸入的數被N整除
余數為r
S4:R=0則
輸入的數不為素數
結束
S5:R!=0
N=N+1
TO
S3
S6:N<輸入的數
輸入的數為素數
D. 求100位以上的大素數演算法
從計算機編程角度上來說,演算法應該是給定某個數n,然後用這個數n從2開始除,一直除到這個數開平方根(即根號n)為止,如果其中有能被整除的數,那麼這個數n就不是素數,反之就是素數,這樣的演算法在數學上是可以證明的,但對於編程初學者來說,可以從素數的定義著手考慮程序演算法,即從2一直除到n-1為止,沒有可以被整除的數時,n就是素數 ,
c、c++,java等相近的計算機編程語言的核心代碼如下:
...//程序開頭
int i,j,sum=0;;
for(i=100;i<=1000;i++)
{
for(j=2;j<i;j=j++)
{
if(i%j==0) break;
}
if(j>=i) //判斷上術循環是不是正常退出,是正常退出的話,那個數就是素數 。通過Break語句退出的就不是素數了。
{
sum++;
System.out.println("第"+sum+"個"+i+"是素數!");//這里我採用的是JAVA的程序輸出格式,作用是將求出的素數輸出;c語言里可以用printf,c++里可以用cout<<;等等。。。
}
}
...//程序結尾
附C的代碼:
main(){
int i,j,sum=0;;
for(i=100;i<=1000;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0) break;
}
if(j>=i)
{
sum++;
printf("第"+sum+"個"+i+"是素數!");
}
E. math:求質數的幾種演算法
你想想吧,如果判斷100是否為素數,那就是用2、3、4……去除100,只要有一個被整除了,那100就不是素數!sqrt(100)是求100的平方根的意思,100的平方根是10,用2、3、4……10去除100就可以了,用不著再用11、12、13……99去除100了。為什麼呢?因為一個數是它的兩個平方根之積,用其中一個平方根之內的各個數遍歷了,難道還有漏網的數未去除「這個數」?比如100吧,找個大於其平方根10的好說的數20為例,說沒有必要用20去除100了就是因為你已經用5除過了,100不是素數!a÷b=c的話,那a÷c不就等於b嘛,幹嘛非得反過來再除一次?這樣做的目的是為了提高代碼時效,試想10000的平方根是100,用這方法10000是不是素數頂多做100次除法就知道了,不然就可能要做9999次,哪個時效高?多說一句,從判定「是不是素數」這一點上說,有沒有sqrt(這個數)倒確實是無意義的……
F. 米勒勒賓演算法求大素數的代碼或者演算法
參考文獻 http://blog.csdn.net/fisher_jiang/article/details/986654
這篇文章講的很好,給你看看,歡迎討論。
G. 求素數怎樣優化演算法
1.如果要找出這個范圍內的所有素數,可以使用篩選法,把不是素數的篩掉
從小到大,如果p是素數,則篩去p*p,p*(p+1),.....
2.如果只是做判斷,就用Miller-Rabin測試,基於費馬小定理,對於正整數n,如果存在正整數a,滿足a^(n-1)=1(mod
n),(=應為三行的同餘)
則n為基於a的偽素數,也就基本上是素數拉,只要對隨機的多個a進行測試,如果都成立,就可以認為n是素數拉.
H. 計算機C語言求素數演算法,
這個有很多種
常用的 判斷除以2.,除以。。。。。 這適用於判斷具體的某個數組
剔除法 除以2的時候 把2的倍數全部剔除 以此類推。。。 這適合求多個
已有查找法,用文件數組保存一些素數,為方便使用直接查找 這個屬於取巧類型嚴格不算演算法
還有其他比較高級一些的演算法這個可以具體找找
I. C++求素數的演算法
#include<iostream.h>
void main()
{
int i,j;
cout<<"輸出100以內的素數"<<endl;
cout<<"100內的素數為"<<endl;
for(i=1;i<=100;i++)
{for(j=2;j<i;j++)
{if(i%j==0)
break; }
if(i==j)
cout<<" "<<i;}
}
素數的范圍通過修改100就行了
J. c語言 求素數的演算法!!!(要更快點的方法)
10000以內的素數:
#include <stdio.h>
main()
{
int n,i;
for(n=3;n<=10000;n++)
{
for(i=2;i<n;i++)
if(n%i==0) break;
if(i>=n)
printf("%d,",n);
}
}