-
大小: 4KB文件類型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2021-06-03
- 語言: C/C++
- 標(biāo)簽:
資源簡介
c++實(shí)現(xiàn)。先初步判斷是不是能夠被2,或者5整除,如果是的話那么不是素?cái)?shù)。獲得該數(shù)的位數(shù)向上取整的最大數(shù)A,如:假如該數(shù)是78377393787372,那么A= 9999999(理論上講應(yīng)該是該數(shù)的平方根,但是由于數(shù)超大,很難求出平方根,就用A取代),再取t,使得2<=t<=A,讓t每次自加加一次,如果結(jié)果等于該數(shù),則可知t能被該數(shù)整除,則該數(shù)不是素?cái)?shù),如果結(jié)果大于該數(shù),則取下一個(gè)t,既t++;,如果結(jié)果小于該數(shù),則繼續(xù)讓t自加加。
代碼片段和文件信息
//?Sushu.cpp?:?定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#include?“stdafx.h“
#include
#include
#include
using?namespace?std;
//輸入長度小于等于100的正整數(shù),判斷是不是素?cái)?shù),每個(gè)輸入字符都是0到9之間的數(shù)
//獲得輸入數(shù)據(jù)
vector?getNum()
{
char?input[101];
cin?>>?input;
vector?num(0);
int?ij;
for(i?=?0;?‘\0‘?!=?input[i];?i++)
{
num.push_back(input[i]?-?‘0‘);
}
//如果是偶數(shù)那么不是素?cái)?shù)
if(0?==?num[num.size()-1]%2?||?0?==?num[num.size()-1]%5)
{
cout?<“不是素?cái)?shù)“?< exit(0);
}
return?num;
}
//將一維向量表示的數(shù)組加一
void?addOne(vector?&a)
{
int?i;
for(i?=?a.size()-1;?i?>=?0?;?i--)
{
if(?a[i]?+?1?<=?9)
{
a[i]?+=?1;
return;
}
//已經(jīng)是最高位了,則必須增加一位
if(?0?==?i)
{
a.resize(a.size()+1);
for(i?=?a.size()?-?1;?i?>?0;?i--)
{
a[i]?=?a[i-1];
}
a[0]?=?1;
a[1]?=?0;
return;
}
a[i]?=?0;
}
}
//比較ab的大小
//a?>?b?返回?1
//a?=?b?返回?0
//a?int?aEqualb(vector?a?vector?b)
{
int?i;
if(?a.size()?>?b.size())
return?1;
if(a.size()? return?-1;
for(i?=?0;?i? {
if(?a[i]?>?b[i]?)
return?1;
if(a[i]? return?-1;
}
return?0;
}
//a加上b,返回結(jié)果
//模仿了兩個(gè)字符串合并的算法
vector?aAddb(vector?a?vector?b)
{
int?ijk;
i?=?a.size();
j?=?b.size();
vector?c(0);
if(i?>=?j)
{
c.resize(i);
}
else
{
c.resize(j);
}
i--;
j--;
k?=?c.size()?-?1;
while(?i?>=?0?&&?j?>=?0)
{
if(?(a[i]?+?b[j]?+?c[k])?>?9)
{
c[k]?=?(a[i]?+?b[j]?+?c[k])%10;
if(?0?==?k)
{
c.resize(c.size()+1);
for(k?=?c.size()-1;?k?>?0;?k--)
{
c[k]?=?c[k-1];
}
c[0]?=?1;
return?c;
}
c[k-1]?+=?1;
}
else
{
c[k]?=?a[i]?+?b[j]?+?c[k];
}
i--;
j--;
k--;
}
while(?
評(píng)論
共有 條評(píng)論