演算法學習 列舉之基於素數的代數和

2022-01-12 11:20:09 字數 1375 閱讀 3500

基於素數的代數和

s(n) = (1/3)-(3/5)-(5/7)+(7/9)+...+(2n-1)/(2n+1)

分子與分母中有且只有乙個素數時符號取+ 分子與分母都不是素數或者都是素數,則前面的符號取-

1.求s(2016)

2.設1<=n<=2016,求當n為多大時,s(n)最大

3.設1<=n<=2016 求當n為多大時,s(n)最接近0

設定乙個二維陣列存放數值

a[i][1]存放2i+1

a[i][0]存放0或1

如果2i+1是素數,則存放0,不為素數,則存放1

比如a[3][1]=7a[3][0]=1

當分子與分母只有乙個是素數的時候,a[i][0]+a[i+1][0]=1,取+,不是的話,則取-。以此為條件,可以計算s(n)的值

求最大值,我們只需要在每次s(n)加或減之後進行一次判斷,若s大於max,則交換數值,第k項可以由公式a[i][0]=2i-1求得i,也就是k = (a[i][0]+1)/2

求最接近0的數值,需要判斷,絕對值是否為最小,求絕對值可以使用math.abs(double s)方法

scanner scnner = new scanner(system.in);

int n = scnner.nextint();

scnner.close();

int a = new int[2*n+1][2];

for(int j=0,i=1;i<=2*n+1;i=i+2,j++)else

a[j][1] = i; //

}double s =0;

int k1=1,k2=1;//第k項

double max =0,min=1;//這裡min最小可以取1,或者取大於1的數字,求得最接近0的k項也是同樣的

double s2=0; //存放最接近0的數值

double temp=0;//乙個暫時存放數值的變數

演算法學習之素數

判斷是否是素數,素數又稱為質數,是大於1且除了本身沒有因數的自然數,如2,3,5,7,11等 演算法1 bool isprime int n int divisors,i divisors 0 for int i 1 i n i if n i 0 divisors return divisors 2...

深度學習演算法實踐2 線性代數和Numpy的使用

測試開發環境是否正確,定義二維陣列及常數與陣列相乘 import numpy from theano import import theano.tensor as t mtx numpy.asarray 1.0,2.0 3.0,4.0 5.0,6.0 scale 2.0 newmtx scale m...

演算法學習之素數環問題

1 n組成的素數環,素數環就是乙個陣列中後乙個數加前乙個數必須組成素數,a i a i 1 是素數,又因為是環狀所以,首末相加也要上素數即a 0 a n 1 是素數,因為是環狀所以會有很多重複的排列,我們要除去重複的排列,就要假定所有的排列都以1打頭。我們也是用回溯加剪枝來求素數環 include ...