#include <cstdlib>
#include <iostream>
using namespace std;
int sqrt(int n)//對<1000000的正整數開根號到整數位
{
int i=0,j=0,k=0;
int div[3],quot[3],ans;
div[0]=n/10000;
div[1]=(n%10000)/100;
div[2]=n%100;
while(i*i<=div[0]) i++;
i--;
quot[0]=i;//ans的百位數
div[1]=div[1]+(div[0]-i*i)*100;
i*=20;
while(i*j<=div[1])
{
j++; i++;
}
i--; j--;
quot[1]=j;//ans的十位數
div[2]=div[2]+(div[1]-i*j)*100;
i=(i+j)*10;
while(i*k<=div[2])
{
i++; k++;
}
i--; k--;
quot[2]=k;//ans的個位數
ans=quot[0]*100+quot[1]*10+quot[2];
return ans;
}
int check_prim(int p,int n)//n為sqrt(p),p為input
{
int i;
while (p%2!=0)
{
for(i=3;i<=n;i+=2)
{
if(p%i==0) return 0;
}
return 1;
}
return 0;
}
int main()
{
int pri,n;
cout << "請輸入一個整數<1000000,判斷是否為質數?" << endl;
cin >> pri;
n=sqrt(pri);
cout << "開根號至整數為:" << endl << n << endl;
if (check_prim(pri,n))
cout << pri << "為質數" << endl;
else
cout << pri << "不為質數" << endl;
system("pause");
}
I2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IHNxcnQoaW50IG4pLy/lsI08MTAwMDAwMOeahOato+aVtOaVuOmWi+agueiZn+WIsOaVtOaVuOS9jQp7CiAgICBpbnQgaT0wLGo9MCxrPTA7CiAgICBpbnQgZGl2WzNdLHF1b3RbM10sYW5zOwogICAgZGl2WzBdPW4vMTAwMDA7CiAgICBkaXZbMV09KG4lMTAwMDApLzEwMDsKICAgIGRpdlsyXT1uJTEwMDsKICAgIHdoaWxlKGkqaTw9ZGl2WzBdKSBpKys7CiAgICBpLS07CiAgICBxdW90WzBdPWk7Ly9hbnPnmoTnmb7kvY3mlbgKICAgIGRpdlsxXT1kaXZbMV0rKGRpdlswXS1pKmkpKjEwMDsKICAgIGkqPTIwOwogICAgd2hpbGUoaSpqPD1kaXZbMV0pCiAgICB7CiAgICAgICAgaisrOyBpKys7CiAgICB9CiAgICBpLS07IGotLTsKICAgIHF1b3RbMV09ajsvL2Fuc+eahOWNgeS9jeaVuAogICAgZGl2WzJdPWRpdlsyXSsoZGl2WzFdLWkqaikqMTAwOwogICAgaT0oaStqKSoxMDsKICAgIHdoaWxlKGkqazw9ZGl2WzJdKQogICAgewogICAgICAgIGkrKzsgaysrOwogICAgfQogICAgaS0tOyBrLS07CiAgICBxdW90WzJdPWs7Ly9hbnPnmoTlgIvkvY3mlbgKICAgIGFucz1xdW90WzBdKjEwMCtxdW90WzFdKjEwK3F1b3RbMl07CiAgICByZXR1cm4gYW5zOwp9CmludCBjaGVja19wcmltKGludCBwLGludCBuKS8vbueCunNxcnQocCnvvIxw54K6aW5wdXQKewogICAgaW50IGk7CiAgICB3aGlsZSAocCUyIT0wKQogICAgewogICAgICAgIGZvcihpPTM7aTw9bjtpKz0yKQogICAgICAgIHsKICAgICAgICAgICAgaWYocCVpPT0wKSByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICByZXR1cm4gMDsKfQppbnQgbWFpbigpCnsKICAgIGludCBwcmksbjsKICAgIGNvdXQgPDwgIuiri+i8uOWFpeS4gOWAi+aVtOaVuDwxMDAwMDAw77yM5Yik5pa35piv5ZCm54K66LOq5pW4PyIgPDwgZW5kbDsKICAgIGNpbiA+PiBwcmk7CiAgICBuPXNxcnQocHJpKTsKICAgIGNvdXQgPDwgIumWi+agueiZn+iHs+aVtOaVuOeCujoiIDw8IGVuZGwgPDwgbiA8PCBlbmRsOwogICAgaWYgKGNoZWNrX3ByaW0ocHJpLG4pKSAKICAgICAgICBjb3V0IDw8IHByaSA8PCAi54K66LOq5pW4IiA8PCBlbmRsOwogICAgZWxzZQogICAgICAgIGNvdXQgPDwgcHJpIDw8ICLkuI3ngrros6rmlbgiIDw8IGVuZGw7IAogICAgc3lzdGVtKCJwYXVzZSIpOwp9Cg==