[問題] 不知錯在哪 有時程式會跑不完

看板C_and_CPP (C/C++)作者 (JOU)時間16年前 (2009/03/11 23:59), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
如題 題目是要將非質數的數字 換一個位置然後相加 直到變成質數 如85-->58 (1)85+58=143 (2)143+431=574 (3)574+745=1319 輸入十位以上數字都OK 質數也都OK 但像輸入2就爆了 有請版上神人解惑 #include<iostream> using namespace std; int main(void){ unsigned long a,b,c,timeI,N,temp,pro=0,p,num=0,che; while(cin>>a){ timeI=0; int i=1; c=0; while(i) { for(N=1;N<=a;N++)   //我是用很笨的方法確認是否為質數 {if((N*N)>=a) {break;} else if((N*N)<a) {continue;} } if(a<10) pro=a; b=a; for(num=0;a>10;num++) {a=a/10;} for(che=2;che<=N;che++) {if((b%che)!=0) {i=0; continue; } else if((b%che)==0) {i=1; break; } } if(i==1) {temp=1; for(p=0;p<=num;p++) {temp=temp*10; } if(pro>0) {c=pro+pro;} if(pro<=0) {c=b*10-(a*temp)+a; c+=b; } a=c; timeI++; } if(i==0) { a=b; break;} } // i那的 cout<<timeI<<" "<<a<<" "<<N<<" "<<i<<endl; } system("pause"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.98.64

03/12 01:00, , 1F
while(i=1) + 條件式break = 容易有例外情況而跑不完
03/12 01:00, 1F
文章代碼(AID): #19jz_bwg (C_and_CPP)
文章代碼(AID): #19jz_bwg (C_and_CPP)