• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: C/C++
  • 标签:

资源简介

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 << “不是素数“ << endl;
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 < b 返回 -1
int aEqualb(vector a vector b)
{
int i;
if( a.size() > b.size())
return 1;
if(a.size() < b.size())
return -1;
for(i = 0; i < a.size(); i++)
{
if( a[i] > b[i] )
return 1;
if(a[i] < b[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( 

评论

共有 条评论

相关资源