Skip to content
Open
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
98 changes: 98 additions & 0 deletions SuperPrime-HW2.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
#include <iostream>
#include <vector>
class Nature {
private:
int num;
public:
Nature():num(0) {}
Nature(int n):num(n) {}
Nature(const Nature &nat):num(nat.num){}
~Nature() {}

Nature show() {
std::cout << num << std::endl;
}

bool Prime(int n) {
int m;
if(n<=1)
return false;
for(m=2;m*m<=n;m++)
if(n%m==0) return false;
return true;
}

bool isSuperPrime() {
int sum, mul, square_sum,b,c,d;

b = num / 100;
c = (num - b*100) / 10;
d = num % 10;
sum = d + b + c;
mul = d * b * c;
square_sum = d*d + b*b +c*c;
if(Prime(num)&&Prime(sum)&&Prime(mul)&&Prime(square_sum))
return true;
return false;
}
int getnum() {
return num;
}
};

class SuperPrime {
private:
std::vector<Nature> natures;
public:
SuperPrime(int a, int b) {
for(int i = a; i < b; i++) {
Nature nat(i);
if(nat.isSuperPrime()){
natures.push_back(nat);
}
}
}
~SuperPrime() {
}

Nature max() {
std::vector<Nature>::iterator it = natures.begin();
int m = 0;
for(; it != natures.end(); it ++) {
int num = it->getnum();
m = num>m?num:m;
}
return Nature(m);
}
Nature sum(){
std::vector<Nature>::iterator it = natures.begin();
int sum = 0;
for(; it != natures.end(); it ++) {
int num = it->getnum();
sum += num;
}
return Nature(sum);
}
Nature number(){
std::vector<Nature>::iterator it = natures.begin();
int number = 0;
for(; it != natures.end(); it ++) {
number++;
}
return Nature(number);
}
};

int main() {
SuperPrime sp(100,999);
Nature n = sp.max();
Nature sum = sp.sum();
Nature number = sp.number();
std::cout << "���ij���������" << std::endl;
n.show();
std::cout << "��������֮��Ϊ��" << std::endl;
sum.show();
std::cout << "��������������" << std::endl;
number.show();
return 0;
}
40 changes: 30 additions & 10 deletions SuperPrime.c
Original file line number Diff line number Diff line change
@@ -1,10 +1,30 @@
//超级素数:它本身,各位数字的和,各位数字的平方和,都是素数。
//求 100~10000 内的所有超级素数,及它们的平均数。

int isPrime(int x);
int splitNum(int x, int num[]);

int main()
{
return 0;
}
#include <stdio.h>
#include <stdbool.h>
bool prime(int n)
{
int m;
if(n<1)
return false;
for(m=2;m*m<=n;m++)
if(n%m==0)
return false;
return true;
}
int main()
{
int a,b,c,j,k,l;
int i,n,max;
int sum=0,num=0;
for(i=100;i<=999;i++)
{
a=i/100;b=(i-a*100)/10;c=i%10;
j=a+b+c;
k=a*b*c;
l=a*a+b*b+c*c;
if(prime(i)&&prime(j)&&prime(k)&&prime(l))
{sum+=i;num++;max=i;}
}
printf("%d\n%d\n%d",num, sum,max);
return 0;
}