Skip to content
Open

new #143

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 61 additions & 42 deletions SuperPrime-HW2.cpp
Original file line number Diff line number Diff line change
@@ -1,57 +1,76 @@
#include <iostream>
#include<iostream>
#include <vector>
#include<numeric>
#include <algorithm>
using namespace std;
class Nature {
private:
int num;
public:
Nature():num(0){
std::cout << "Default Create Nature as " << num << std::endl;
//std::cout << "Default Create Nature as " << num << std::endl;
}
Nature(int n):num(n) {
std::cout << "Create Nature as " << num << std::endl;
//std::cout << "Create Nature as " << num << std::endl;
}
Nature(const Nature &nat):num(nat.num){
std::cout << "Copy Create Nature as " << num << std::endl;
//std::cout << "Copy Create Nature as " << num << std::endl;
}
~Nature() {
std::cout << "Destroy Nature as " << num << std::endl;
//std::cout << "Destroy Nature as " << num << std::endl;
}
};
class SuperPrime {
private:
std::vector<Nature> natures;
public:
SuperPrime(int a, int b) {
std::cout << "Create SuperPrime from " << a << " to " << b << std::endl;
for(int i = a; i < b; i++) {
Nature nat(i);
std::cout << "HAHA" << std::endl;
natures.push_back(nat);
std::cout << "DDDDD" << std::endl;
}
}
~SuperPrime() {
std::cout << "Destroy SuperPrime " << std::endl;
}

Nature max() {
std::vector<Nature>::iterate it = natures.begin();
Nature max(0);
for(; it != natures.end(); it ++) {
if(it->isSuperPrime()) {
if (max.compare(*it)) {
max = *it;

friend class superprime;
};
class superprime{
private:int num1,num2,num3;std::vector<int>natures;
public:
bool is_prime(int m) {
int i;
if(m<=2)
return false;
else
for(i=2; i<=m-1; i++)
if(m%i==0) return false;
return true; }
bool is_superprime(int number) {
int num1=number/100;int num2=(number-num1*100)/10;int num3=number-num1*100-num2*10;
int number1=num1+num2+num3;int number2=num1*num2*num3;int number3=num1*num1+num2*num2+num3*num3;
if(is_prime(number1)&&is_prime(number2)&&is_prime(number3))
return true;
else
return false;
}
}
}
return max;
}
};
int main() {
SuperPrime sp(10, 13);
Nature n = sp.max();
std::cout << "��󳬼�������" ;
n.show();

Nature num_amount() {
return num1=natures.size();
}
superprime(int a,int b) {
for(int i = a; i < b; i++) {
if(is_superprime(i))
natures.push_back(i);
}
}
Nature num_sum(){
int sum = accumulate(natures.begin(),natures.end(),0);
num2=sum;
}
Nature num_big(){
int big =*max_element(natures.begin(),natures.end());
num3=big;
}
int show(){
std::cout << "超级素数个数:" << num1 << std::endl;
std::cout << "最大的超级素数:" << num2 << std::endl;
std::cout << "超级素数的和:" << num3 << std::endl;
}
};
int main()
{
superprime sp(100, 999);
Nature n1=sp.num_amount();
Nature n2=sp.num_sum();
Nature n3=sp.num_big();
sp.show();
return 0;
}
}

51 changes: 48 additions & 3 deletions SuperPrime_HW.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,50 @@
#include <iostream>

int main() {
#include<iostream>
#include <vector>
#include<numeric>
#include <algorithm>
using namespace std;
bool is_prime(int m) {
int i;
if(m<=2)
return false;
else
for(i=2; i<=m-1; i++)
if(m%i==0) return false;
return true; }
bool is_superprime(int number) {
int num1=number/100;int num2=(number-num1*100)/10;int num3=number-num1*100-num2*10;
int number1=num1+num2+num3;int number2=num1*num2*num3;int number3=num1*num1+num2*num2+num3*num3;
if(is_prime(number1)&&is_prime(number2)&&is_prime(number3))
return true;
else
return false;
}
class superprime{
private:int num;std::vector<int>range;
public:
int num_amount() {
return range.size();
}
superprime(int a,int b) {
for(int i = a; i < b; i++) {
if(is_superprime(i))
range.push_back(i);
}
}
int num_sum(){
int sum = accumulate(range.begin(),range.end(),0);
return sum;
}
int num_big(){
int big =*max_element(range.begin(),range.end());
}
};
int main()
{
superprime sp(100, 999);
std::cout << "超级素数个数:" << sp.num_amount() << std::endl;
std::cout << "最大的超级素数:" << sp.num_big() << std::endl;
std::cout << "超级素数的和:" << sp.num_sum() << std::endl;
return 0;
}
}