資源簡介
c++實現。先初步判斷是不是能夠被2,或者5整除,如果是的話那么不是素數。獲得該數的位數向上取整的最大數A,如:假如該數是78377393787372,那么A= 9999999(理論上講應該是該數的平方根,但是由于數超大,很難求出平方根,就用A取代),再取t,使得2<=t<=A,讓t每次自加加一次,如果結果等于該數,則可知t能被該數整除,則該數不是素數,如果結果大于該數,則取下一個t,既t++;,如果結果小于該數,則繼續讓t自加加。
代碼片段和文件信息
//?Sushu.cpp?:?定義控制臺應用程序的入口點。
//
#include?“stdafx.h“
#include
#include
#include
using?namespace?std;
//輸入長度小于等于100的正整數,判斷是不是素數,每個輸入字符都是0到9之間的數
//獲得輸入數據
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‘);
}
//如果是偶數那么不是素數
if(0?==?num[num.size()-1]%2?||?0?==?num[num.size()-1]%5)
{
cout?<“不是素數“?< exit(0);
}
return?num;
}
//將一維向量表示的數組加一
void?addOne(vector?&a)
{
int?i;
for(i?=?a.size()-1;?i?>=?0?;?i--)
{
if(?a[i]?+?1?<=?9)
{
a[i]?+=?1;
return;
}
//已經是最高位了,則必須增加一位
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,返回結果
//模仿了兩個字符串合并的算法
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(?
- 上一篇:16點基4dit-fft程序c++
- 下一篇:電話費查詢系統(C語言文字)
評論
共有 條評論