diff --git a/SuperPrime_HW2.cpp b/SuperPrime_HW2.cpp index ec1c77f3..90bbb2c7 100644 --- a/SuperPrime_HW2.cpp +++ b/SuperPrime_HW2.cpp @@ -1,94 +1,152 @@ #include #include -class Nature { +#include +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 < natures; + std::vector 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::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::iterate it = natures.begin(); - Nature max(0); - for(; it != natures.end(); it ++) { - if (max.compare(*it)) { - max = *it; + Nature num() + { + std::vector::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::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; -} +} diff --git a/Super_Prime.cpp b/Super_Prime.cpp new file mode 100644 index 00000000..66e88cee --- /dev/null +++ b/Super_Prime.cpp @@ -0,0 +1,36 @@ +#include +#include + +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; +} diff --git "a/c++\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232\357\274\232\350\266\205\347\272\247\347\264\240\346\225\260.cpp" "b/c++\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232\357\274\232\350\266\205\347\272\247\347\264\240\346\225\260.cpp" new file mode 100644 index 00000000..66e88cee --- /dev/null +++ "b/c++\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232\357\274\232\350\266\205\347\272\247\347\264\240\346\225\260.cpp" @@ -0,0 +1,36 @@ +#include +#include + +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; +}