此次記錄一道ACM很簡單的一道題。ios
連接描述數組
題目意思呢是:輸入三個數。a,d,n;
而後造成一個序列:a,a+d;a+2d;a+3d…………
從中尋找素數,輸出第n個素數。函數
素數呢,就是隻能整除1和它自己的數。
貼個斷定素數的代碼:spa
bool sushu(int a) { float a1; a1=a; int i,k; k=sqrt(a1);//sqrt()函數爲求根號函數,須要加頭文件:#include<cmath> if(a==1)//此處注意,我以前就是忘了有a=1這種狀況,而提交失敗。a=1時,直接返回false,不是素數。 return false; for(i=2;i<=k;i++) { if(a%i==0) return false; } return true; }
作這道題個人思路呢是這樣的。先建一個數組k,而後對a,a+d,a+2d……一個個的斷定,是不是素數,如果,則存入數組。那麼結果只要輸出k[n-1]就能夠了。.net
如下是完整代碼:3d
#include<iostream> #include<cmath> using namespace std; bool sushu(int a);//判斷是否素數,是返回true,否返回false int main() { int a,b,c; while(1) { int i; cin>>a>>b>>c; if(a==0&&b==0&&c==0) break; int *k=new int[c]; for(i=0;i<c;) { if(sushu(a)) { k[i]=a; i++; } a=a+b; } cout<<k[c-1]<<endl; } return 0; } bool sushu(int a) { float a1; a1=a; int i,k; k=sqrt(a1); if(a==1) return false; for(i=2;i<=k;i++) { if(a%i==0) return false; } return true; }
這道題雖然很簡單,可是我一開始作的時候仍是遇到了很多的問題。大可能是因爲我本身的基礎不夠紮實形成的。
好比不知道如何斷定是不是素數。(這個很簡單,知道素數的定義應該就明白了)。
還有一個是,我不習慣調用函數,總是把全部代碼都寫在主函數中,又麻煩,又不易理解,容易錯。不是一個好習慣,之後改正。code