diff --git a/SuperPrime_HW.cpp b/SuperPrime_HW.cpp index 0e004b50..f9ff9443 100644 --- a/SuperPrime_HW.cpp +++ b/SuperPrime_HW.cpp @@ -1,5 +1,103 @@ #include - +#include int main() { + int p[1000] = {0}; + int pp[1000] = {0}; + int i = 2; + for(;i < 1000;i++){//筛数法 + p[i] = i; + } + + int j = 0; + i = 2; + for(; i < 1000;i++){//生成一个纯净的素数数组 + if(p[i] == 0){ + continue; + } + pp[j] = p[i]; + + //printf("A%d %d\n",pp[j],j); + + j++; + int k = 2; + for(;(i * k) < 1000;k++){ + p[i * k] = 0; + } + } + int ppn = j; + + //printf("B%d\n",ppn); + + //for(i = 0; i < j;i++){ + // printf("C%d %d\n",pp[i],i); + //} + + + int sp; + int countsp = 0; + int sumsp = 0; + int max = 0; + int judge = 0; + int t; + for(t = 25; t < ppn;t++){ + + //printf("D%d\n",pp[t]); + + sp = pp[t]; + int g = sp % 10; + int s = (sp - g) % 100 / 10; + int b = (sp - 10 * s - g) / 100; + int sum = g + s + b; + int mul = g * s * b; + int mul2 = g * g + s * s + b * b; + + //printf("E%d %d %d %d \n",sp,g,s,b); + + judge = 0; + for(j = 0;j < ppn;j++){ + if(pp[j] == sum){ + judge++; + + //printf("Q1\n"); + + break; + } + } + + //printf("go\n"); + + for(j = 0;j < ppn;j++){ + if(pp[j] == mul){ + judge++; + + //printf("Q2\n"); + + break; + } + } + ; + for(j = 0;j < ppn;j++){ + if(pp[j] == mul2){ + judge++; + + //printf("Q3\n"); + + break; + } + } + + if(judge == 3){ + countsp++; + sumsp += sp; + max = sp; + + //printf("Q%d\n",sp); + + } + + } + printf("个数:%d 和:%d 最大:%d \n",countsp,sumsp,max); + + return 0; } diff --git a/SuperPrime_HW2.cpp b/SuperPrime_HW2.cpp index ec1c77f3..a9da1f27 100644 --- a/SuperPrime_HW2.cpp +++ b/SuperPrime_HW2.cpp @@ -1,94 +1,151 @@ #include #include +#include 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; } - bool isPrime() { - if(num == 1 || num == 0) - return false; - for(int i = 2; i <= (int)sqrt(num); i++) - { - if(num % i == 0) - return false; - } - return true; + bool isSuperPrime(){ + int p[1000] = {0}; + int pp[1000] = {0}; + int i = 2; + for(;i < 1000;i++){//筛数法 + p[i] = i; + } + + int j = 0; + i = 2; + for(; i < 1000;i++){//生成一个纯净的素数数组 + if(p[i] == 0){ + continue; + } + pp[j] = p[i]; + + //printf("A%d %d\n",pp[j],j); + + j++; + int k = 2; + for(;(i * k) < 1000;k++){ + p[i * k] = 0; + } + } + + int ppn = j; + int countsp = 0; + int sumsp = 0; + int max = 0; + int judge = 0; + int t; + for(t = 25; t < ppn;t++){ + num = pp[t]; + int g = num % 10; + int s = (num - g) % 100 / 10; + int b = (num - 10 * s - g) / 100; + int sum = g + s + b; + int mul = g * s * b; + int mul2 = g * g + s * s + b * b; + + //printf("E%d %d %d %d \n",sp,g,s,b); + + judge = 0; + for(j = 0;j < ppn;j++){ + if(pp[j] == sum){ + judge++; + + //printf("Q1\n"); + + break; + } + } + + //printf("go\n"); + + for(j = 0;j < ppn;j++){ + if(pp[j] == mul){ + judge++; + + //printf("Q2\n"); + + break; + } + } + ; + for(j = 0;j < ppn;j++){ + if(pp[j] == mul2){ + judge++; + + //printf("Q3\n"); + + break; + } + } + + if(judge == 3){ + return true; + } + return false; } - int compare(const Nature &nat) { - if (num > nat.num) - return 1; - else if(num == nat.num) - return 0; - - return -1; +} + bool compare(Nature a){ + if(num < a.num){ + return true; + } + 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; + int show(){ + std::cout<< "max:"<< num < natures; + std::vector natures; public: - Container(int a, int b) { - std::cout << "Create SuperPrime from " << a << " to " << b << std::endl; + SuperPrime(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; + Nature nat(i); + //std::cout << "HAHA" << std::endl; + natures.push_back(nat); + //std::cout << "DDDDD" << std::endl; } } - ~Container() { - std::cout << "Destroy SuperPrime " << std::endl; + ~SuperPrime() { + //std::cout << "Destroy SuperPrime " << std::endl; } - SuperPrime max() { - std::vector::iterate it = natures.begin(); + Nature max() { + std::vector::iterator it = natures.begin(); Nature max(0); - for(; it != natures.end(); it ++) { - if (max.compare(*it)) { + for(; it != natures.end(); it++) { + if(it->isSuperPrime()) { + + if (max.compare(*it)) { max = *it; - } + } + } } return max; } + }; -int main() { - SuperPrime sp(10, 13); +int main(){ + SuperPrime sp(100, 999); Nature n = sp.max(); - std::cout << "��󳬼�������" ; - n.show(); - + //std::cout << "max:"<< ; + //the three numbers,howmany are they,the max of them. + n.show();//the max of them + return 0; -} +} diff --git a/amy/6.1.8.cpp b/amy/6.1.8.cpp new file mode 100644 index 00000000..3d612895 --- /dev/null +++ b/amy/6.1.8.cpp @@ -0,0 +1,87 @@ +#include +#include +class Nature { +private: + const unsigned int num; +public: + Nature(int n):num(n){ + } + ~Nature(); + Nature add(Nature sp){ + return Nature(num + sp.num); + } + bool compare(Nature sp){ + if(num > sp.num) + return true; + return false; + } + bool isPrime(){ + for(int i = 2;i < num - 1;i++){ + if(num % i == 0){ + return false; + } + return true; + } + } + bool isSuperprime(){ + + } +}; + +class Superprime{ +private: + std::vector range; + +public: + Superprime(int a,int b){ + for(int i = a;i < b;i++){ + Nature nat(i); + if(nat.isSuperprime())// ֻ sp ŵ + range.push_back(nat); + } + } + ~Superprime(); + int max(){ + for(std::vector::iterator it = range.begin();it != range.end();it++){ + //뷨ǷһԪأNatureͣnum + } + return 0; + } + int sum(){ + Nature sum1(0); + for(std::vector::iterator it = range.begin();it != range.end();it++){ + //뷨Ƿsum1еsum() Ľ + } + return 0; + } + int howmany(){ + return range.size(); + } + +private: + void split(int x){ + int a,sum = 0,mult = 0 ,sqrsum = 0; + //ֽÿλ + while(x != 0){ + a = x % 10; + sum += a; + mult *= a; + sqrsum += a * a; + x = x / 10; + } + } +}; + + + + +int main(){ + Superprime sp(100,999); + std::cout<< "max:"<< sp.max() << std::endl; + std::cout << "sum:" << sp.sum() << std::endl; + std::cout << "many:" << sp.howmany() < +//sum <= 27 mul <= 729 mul2 <= 243 +int main(){ + int p[1000] = {0}; + int pp[1000] = {0}; + int i = 2; + for(;i < 1000;i++){//ɸ + p[i] = i; + } + + int j = 0; + i = 2; + for(; i < 1000;i++){//һ + if(p[i] == 0){ + continue; + } + pp[j] = p[i]; + + //printf("A%d %d\n",pp[j],j); + + j++; + int k = 2; + for(;(i * k) < 1000;k++){ + p[i * k] = 0; + } + } + int ppn = j; + + //printf("B%d\n",ppn); + + //for(i = 0; i < j;i++){ + // printf("C%d %d\n",pp[i],i); + //} + + + int sp; + int countsp = 0; + int sumsp = 0; + int max = 0; + int judge = 0; + int t; + for(t = 25; t < ppn;t++){ + + //printf("D%d\n",pp[t]); + + sp = pp[t]; + int g = sp % 10; + int s = (sp - g) % 100 / 10; + int b = (sp - 10 * s - g) / 100; + int sum = g + s + b; + int mul = g * s * b; + int mul2 = g * g + s * s + b * b; + + //printf("E%d %d %d %d \n",sp,g,s,b); + + judge = 0; + for(j = 0;j < ppn;j++){ + if(pp[j] == sum){ + judge++; + + //printf("Q1\n"); + + break; + } + } + + //printf("go\n"); + + for(j = 0;j < ppn;j++){ + if(pp[j] == mul){ + judge++; + + //printf("Q2\n"); + + break; + } + } + ; + for(j = 0;j < ppn;j++){ + if(pp[j] == mul2){ + judge++; + + //printf("Q3\n"); + + break; + } + } + + if(judge == 3){ + countsp++; + sumsp += sp; + max = sp; + + //printf("Q%d\n",sp); + + } + + } + printf("%d ͣ%d %d \n",countsp,sumsp,max); + + + return 0; +} diff --git "a/hw.1.2\350\266\205\347\272\247\347\264\240\346\225\260.c" "b/hw.1.2\350\266\205\347\272\247\347\264\240\346\225\260.c" new file mode 100644 index 00000000..7d7f2634 --- /dev/null +++ "b/hw.1.2\350\266\205\347\272\247\347\264\240\346\225\260.c" @@ -0,0 +1,103 @@ +#include +//sum <= 27 mul <= 729 mul2 <= 243 +int main(){ + int p[1000] = {0}; + int pp[1000] = {0}; + int i = 2; + for(;i < 1000;i++){//ɸ + p[i] = i; + } + + int j = 0; + i = 2; + for(; i < 1000;i++){//һ + if(p[i] == 0){ + continue; + } + pp[j] = p[i]; + + //printf("A%d %d\n",pp[j],j); + + j++; + int k = 2; + for(;(i * k) < 1000;k++){ + p[i * k] = 0; + } + } + int ppn = j; + + //printf("B%d\n",ppn); + + //for(i = 0; i < j;i++){ + // printf("C%d %d\n",pp[i],i); + //} + + + int sp; + int countsp = 0; + int sumsp = 0; + int max = 0; + int judge = 0; + int t; + for(t = 25; t < ppn;t++){ + + //printf("D%d\n",pp[t]); + + sp = pp[t]; + int g = sp % 10; + int s = (sp - g) % 100 / 10; + int b = (sp - 10 * s - g) / 100; + int sum = g + s + b; + int mul = g * s * b; + int mul2 = g * g + s * s + b * b; + + //printf("E%d %d %d %d \n",sp,g,s,b); + + judge = 0; + for(j = 0;j < ppn;j++){ + if(pp[j] == sum){ + judge++; + + //printf("Q1\n"); + + break; + } + } + + //printf("go\n"); + + for(j = 0;j < ppn;j++){ + if(pp[j] == mul){ + judge++; + + //printf("Q2\n"); + + break; + } + } + ; + for(j = 0;j < ppn;j++){ + if(pp[j] == mul2){ + judge++; + + //printf("Q3\n"); + + break; + } + } + + if(judge == 3){ + countsp++; + sumsp += sp; + max = sp; + + //printf("Q%d\n",sp); + + } + + } + printf("%d ͣ%d %d \n",countsp,sumsp,max); + + + return 0; +}