Skip to content
Open

hm #139

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
192 changes: 125 additions & 67 deletions SuperPrime_HW2.cpp
Original file line number Diff line number Diff line change
@@ -1,94 +1,152 @@
#include <iostream>
#include <vector>
class Nature {
#include<cmath>
class Nature
{
private:
int num;

public:
Nature():num(0){
std::cout << "Default Create Nature as " << num << std::endl;
Nature() : num(0)
{
// std::cout << "Default Create Nature as " << num << std::endl;
}
Nature(int n):num(n) {
std::cout << "Create Nature as " << num << std::endl;
Nature(int n) : num(n)
{
// std::cout << "Create Nature as " << num << std::endl;
}
Nature(const Nature &nat):num(nat.num){
std::cout << "Copy Create Nature as " << num << std::endl;
Nature(const Nature &nat) : num(nat.num)
{
// std::cout << "Copy Create Nature as " << num << std::endl;
}
~Nature() {
std::cout << "Destroy Nature as " << num << std::endl;
~Nature()
{
// std::cout << "Destroy Nature as " << num << std::endl;
}
bool isPrime() {
if(num == 1 || num == 0)
bool compare(Nature it)
{
if(it.num > num)
{
return true;
}
else
return false;
}
bool isPrime(int num1)
{
if(num1 == 1 || num1 == 0)
return false;
for(int i = 2; i <= (int)sqrt(num); i++)
for(int i = 2; i <= (int)sqrt(num1); i++)
{
if(num % i == 0)
if(num1 % i == 0)
return false;
}
return true;
}
int compare(const Nature &nat) {
if (num > nat.num)
return 1;
else if(num == nat.num)
return 0;

return -1;
bool isSuperPrime()
{
int a = num % 10;
int b = (num / 10) % 10;
int c = num / 100;
if(isPrime(num) && isPrime(a+b+c) && isPrime(a*b*c) && isPrime(a*a+b*b+c*c))
return true;
else
return false;
}
private:
};
class SuperPrime : public Nature {
private:
int num;
public:
SuperPrime(int n):num(n) {
}
bool isPrime() {
Nature nat(num);
return nat.isPrime();
}
int compare(const SuperPrime &nat) {
if (num > nat.num)
return 1;
else if(num == nat.num)
return 0;

return -1;
void show()
{
std::cout<< num <<std::endl;
}
friend class SuperPrime;
};
class Container {
class SuperPrime
{
private:
std::vector<SuperPrime> natures;
std::vector<Nature> natures;

public:
Container(int a, int b) {
std::cout << "Create SuperPrime from " << a << " to " << b << std::endl;
for(int i = a; i < b; i++) {
SuperPrime nat(i);
std::cout << "HAHA" << std::endl;
if(nat.isSuperPrime())
natures.push_back(nat);
std::cout << "DDDDD" << std::endl;
}
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;
}
~Container() {
std::cout << "Destroy SuperPrime " << std::endl;

Nature max()
{
std::vector<Nature>::iterator it = natures.begin();
Nature max(0);
// Nature sum(0);
// Nature num(0);
for (; it != natures.end(); it++)
{
if (it->isSuperPrime())
{
// std::cout << it->num << std::endl;
// sum.num += it->num;
// num.num++;
if (max.compare(*it))
{
max = *it;
}
}
}
return max;
}

SuperPrime max() {
std::vector<SuperPrime>::iterate it = natures.begin();
Nature max(0);
for(; it != natures.end(); it ++) {
if (max.compare(*it)) {
max = *it;
Nature num()
{
std::vector<Nature>::iterator it = natures.begin();
// Nature max(0);
// Nature sum(0);
Nature num(0);
for (; it != natures.end(); it++)
{
if (it->isSuperPrime())
{
// sum.num += it->num;
num.num++;
}
}
return max;
}
return num;
}
Nature sum()
{
std::vector<Nature>::iterator it = natures.begin();
Nature max(0);
Nature sum(0);
// Nature num(0);
for (; it != natures.end(); it++)
{
if (it->isSuperPrime())
{
sum.num += it->num;
// num.num++;
}
}
return sum;
}

};
int main() {
SuperPrime sp(10, 13);
Nature n = sp.max();
std::cout << "��󳬼�������" ;
int main()
{
SuperPrime sp(100, 999);
Nature n = sp.max();
Nature m = sp.num();
Nature o = sp.sum();

n.show();


m.show();

o.show();
return 0;
}
}
36 changes: 36 additions & 0 deletions Super_Prime.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#include<stdio.h>
#include<math.h>

int zhishu(int r){
float b = sqrt(r);
for(int i = 2; i <= b; i++){
if(r % i ==0){
return 0;
}
else if(r % i != 0&& b - i < 1){
return 1;
}
}

}
int main()
{
int count = 0, sum = 0, zuida = 0;
int a = 100;
for(; a <= 999; a++){
int bai = a / 100;
int shi = (a % 100) / 10;
int ge = a % 10;

if(zhishu(a)&&zhishu(bai + shi + ge)&&zhishu(bai * shi * ge)&&zhishu(bai * bai + shi * shi + ge * ge)){
count++;
sum+=a;
zuida = a;
}
}

printf("%d %d %d", count, sum, zuida);


return 0;
}
36 changes: 36 additions & 0 deletions c++第一次作业:超级素数.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#include<stdio.h>
#include<math.h>

int zhishu(int r){
float b = sqrt(r);
for(int i = 2; i <= b; i++){
if(r % i ==0){
return 0;
}
else if(r % i != 0&& b - i < 1){
return 1;
}
}

}
int main()
{
int count = 0, sum = 0, zuida = 0;
int a = 100;
for(; a <= 999; a++){
int bai = a / 100;
int shi = (a % 100) / 10;
int ge = a % 10;

if(zhishu(a)&&zhishu(bai + shi + ge)&&zhishu(bai * shi * ge)&&zhishu(bai * bai + shi * shi + ge * ge)){
count++;
sum+=a;
zuida = a;
}
}

printf("%d %d %d", count, sum, zuida);


return 0;
}