這個代碼不僅是運行要超過1秒,而且在求出所有質數後就進入了死循環!以輸入120為例,當最後a=5、n=5時進入if(a%n==0),執行a=a/n;使a==1,然後經n=1,再n++使n=2,返回while(a!=0)後因a=1而繼續循環。以後1除以任何大於1的數都不整除,所以n壹直經n++增1,而a=1不變。這樣就成了死循環。可以這樣改:
int?main(void){int?a;
cin>>a;
int?n=2;
//while(a!=0){
while(a!=1){
if(a%n==0){
cout<<n<<endl;
a=a/n;
//n=1;
}
//n++;
else?n++;
}
return?0;
}