[問題] 不知錯在哪 有時程式會跑不完
如題
題目是要將非質數的數字
換一個位置然後相加
直到變成質數
如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
03/12 01:00, 1F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章