1. 编写程序求1000000内的所有素数.
#include<iostream>
#include<iomanip>
using namespace std;
int num[1000010];
bool isprimer(int n)
{
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
return false;
}
return true;
}
void primer(int n)
{
for (int i = 2; i * i <= n; i++)
{
if (isprimer(i))
{
for (int j = 2*i; j <= n; j += i)
{
num[j] = 1;
}
}
}
return;
}
void print(int n)
{
cout.setf(ios::left);
for (int i = 2; i <= n; i++)
if (num[i] == 0)
cout << setw(8) << i;
return;
}
int main()
{
primer(1000000);
print(1000000);
}
2. 编写程序计算整数a, b的最大公因子.
#include<iostream>
using namespace std;
int gcd(int a, int b)
{
if (b > a)
{
int temp = a;
a = b;
b = temp;
}
int n = a % b;
while ((a % b) != 0)
{
a = b;
b = n;
n = a % b;
}
return b;
}
int main()
{
cout << gcd(58, 29);
}
3. 编写程序求正整数n的素因子分解.
#include<iostream>
using namespace std;
bool isprimer(int n)
{
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
return false;
}
return true;
}
void function(int n)
{
int nn = n;
if (n == 1)
cout << "无法分解";
if (n == 2)
{
cout << n << "="<<2;
}
if (n == 3)
{
cout << n << "=" << 3;
}
if (n != 2 && n != 3)
{
cout << n << "=";
for (int i = 2; i<= nn; i++)
{
if (isprimer(i))
{
while (n % i == 0)
{
n = n / i;
if (n!=1)
cout << i << "*";
else
cout << i;
}
}
}
}
}
int main()
{
int n;
cin >> n;
function(n);
}
以三三道关于数论整除方面的编程均为C++实现