Re: [討論] fortran期末考第四題

看板NTUCHE-03-HW作者 (堯)時間13年前 (2011/01/08 00:09), 編輯推噓5(500)
留言5則, 5人參與, 最新討論串2/2 (看更多)
這是給修C++同學看的: 當我聽說Fortran有考質因數分解 嘗試用C++寫 真的他X的有夠難~ 我寫出來的程式如下(模仿原PO的語法(!?)) 假如祥泰不小心考了 看到就賺到啦XD #include <iostream> bool is_prime(int); int GCF(int x,int y); using namespace std; int main() { int a,ai,i,j,t=0,x,y; double **c; cout<<"請輸入一正整數n:"<<endl;; cin>>a; ai=a; if(a<=0) cout<<"你北七嗎"<<endl; else { if(is_prime(a)) {cout<<a<<"是質數"<<endl; cout<<a<<" = 1 x "<<a<<endl; } else { for(i=1;i<=a;i++) { if(is_prime(i) && GCF(i,a)!=1) { cout<<i; while (ai%i==0) {ai =ai/i; t++; } cout<<"^"<<t<<" x "; }t=0; } }cout<<"\b\b"; } system("pause"); return 0; } bool is_prime(int p) { int i; if(p==1) return 0;//1 is not a prime number else { for(i=2;i<p;i++) { if( (p%i)==0 ) return 0; //not a prime number } } return 1; } int GCF(int x,int y) { int r; if (x<y) { r = x; x = y; y = r; } while (r!=0) { r = x%y; x = y; y = r; } return x; } ※ 引述《jsaon92 (jsaon92)》之銘言: : program exam_4 : real,dimension(:),allocatable::div : integer::m,n,i=1 : div=0 : write(*,*)"請輸入一正整數n" : read(*,*)n : if(n<=0)then : write(*,*)"你北七嗎" : else : m=n : allocate(div(m)) : do : i=i+1 : if(mod(n,i)==0)then : div(i)=div(i)+1 : n=n/i : i=1 : endif : if(n==1)exit : enddo : if(sum(div)==1)then : write(*,*)"n是質數" : else : write(*,'(A2)',advance='no')"n=" : do j=2,m : if(div(j)==1)then : write(*,'(A1,I0,A1)',advance='no')"(",j,")" : elseif(div(j)>1)then : write(*,'(A1,I0,A1,I0,A1)',advance='no')"(",j,"^",int(div(j)),")" : endif : enddo : write(*,*) : endif : endif : end program : 我是用除了1以外最小的因數一定是質數的想法 : 有人有更好的寫法嗎@@? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.194.227

01/08 00:41, , 1F
太強了!!!
01/08 00:41, 1F

01/08 01:33, , 2F
太強了!!!
01/08 01:33, 2F

01/08 01:40, , 3F
你北七嗎
01/08 01:40, 3F

01/09 17:47, , 4F
推你北七嗎
01/09 17:47, 4F

01/09 22:06, , 5F
你北七嗎
01/09 22:06, 5F
文章代碼(AID): #1D9phAYP (NTUCHE-03-HW)
文章代碼(AID): #1D9phAYP (NTUCHE-03-HW)