diff --git a/PQPrime.c b/PQPrime.c index 722c6409..f4b3e2bc 100644 --- a/PQPrime.c +++ b/PQPrime.c @@ -1,2 +1,27 @@ // 求 p 和 q -// 当 p 和 q 都是素数,求 p 和 q \ No newline at end of file +// 当 p 和 q 都是素数,求 p 和 q +#include +#include +#define N 300 //range of p +int Isprime(float x); +int main(){ + + for(float p=3;p<=N;p++){ + for(float q=2;p>q;q++){ + int a=pow(p,q); + int b=pow(q,p); + if(Isprime(a+b) /*&& Isprime(q) && Isprime(p)*/) + printf("%g %g\n",p,q); + } + } + } + + +int Isprime(float x){ + int a=(int)x; + for(int i=2;i*i<=a;i++){ + if(!(a%i)) + return 0; + } + return 1; +} diff --git a/SuperPrime.c b/SuperPrime.c index ed445ae2..d9aa8d79 100644 --- a/SuperPrime.c +++ b/SuperPrime.c @@ -2,10 +2,54 @@ //求 100~10000 内的所有超级素数,及它们的平均数。 // 2021-10-29 -int isPrime(int x); -int splitNum(int x, int num[]); +#include +int SplitNum(int num[],int x); +int IsPrime(int x); +int Average(int a[],int x); +int main(){ + int x=100; + int a[221]={0}; + int n=0,i=0; + + for(;x<=10000;x++){ + + int num[5]={0}; + + if(IsPrime(x)){ + + SplitNum(num,x); + int sum=num[0]+num[1]+num[2]+num[3]+num[4]; + int sum2=num[0]*num[0]+num[1]*num[1]+num[2]*num[2]+num[3]*num[3]+num[4]*num[4]; + + if(IsPrime(sum) && IsPrime(sum2)){ + a[i++]=x; + printf("%d\n",x); + n++; + } + } + } + printf("average:%d",(Average(a,n)/n)); + return 0; + +} +int SplitNum(int num[],int x){ + for(int i=0;x>0;i++,x/=10){ + num[i]=x%10; + } + return 0; +} -int main() -{ - return 0; -} \ No newline at end of file +int IsPrime(int x){ + for(int i=2;i*i<=x;i++){ + if(!(x%i)) + return 0; + } + return 1; +} +int Average(int a[],int x){ + int sum=0,i=0; + for(;x>0;x--){ + sum+=a[i++]; + } + return sum; +} diff --git a/google.c b/google.c index ed0baba4..bca72a5f 100644 --- a/google.c +++ b/google.c @@ -2,4 +2,34 @@ //f(13)是0~13中包含1的有 1,10,11,12,13,所以f(13)=6 //f(1) = 1。 //求另一个f(n)=n的n值 -// 2021-11-04 \ No newline at end of file +// 2021-11-04 +#include +long f(long number); + +int main(){ + long i=2; + for(;f(i)!=i;i++){ + printf("%ld %ld\n",i,f(i)); + } + + printf("%ld is the target",i); + return 0; +} +long f(long number){ + long a=number; + + if(a==1) + return 1; + + int b[30]={0},self=0; + + for(int i=0;a>0;a/=10,i++){ + b[i]=a%10; + if(b[i]==1) + self++; + } + long ret=self+f(number-1); + return ret; + + +} diff --git a/resolutions.c b/resolutions.c index e987807d..febe65f3 100644 --- a/resolutions.c +++ b/resolutions.c @@ -6,15 +6,41 @@ //完成如下程序 // 2021-11-14 #include +#include +#define RESNUM 200 +int compare(int x, int y, int const res[][2],int time); int main() { + char ress[2048]; - int x, y; + char *data=ress; + + int x, y,offset,time=0; + + scanf("%s", ress); scanf("%d %d", &x, &y); + int res[RESNUM][2]={0},num=0; + + for(int i=0;sscanf(data,"%dx%d,%n",&res[i][0],&res[i][1],&offset)==2;i++){ + data+=offset; + time++; + } + + num=compare(x,y,res,time); // 学习一下 sscanf 可以方便处理 ress 字符串 - printf("选中的分辨率是%s\n", "???"); + printf("选中的分辨率是%dx%d\n", res[num][0],res[num][1]); + return 0; -} \ No newline at end of file +} +int compare(int x,int y, int const res[][2],int time){ + int num=0; + for(int i=0;i