1.素数
1. [100,999]范围内同时满足以下两个条件的十进制数. ⑴其个位数字与十位数字之和除以10所得的余数是百位数字;⑵该数是素数; 求有多少个这样的数? 15
#include
int prime(int x)
{int i,k;
k=sqrt(x);
for(i=2;i<=k;i++)
if (x%i==0) break;
if (i>k) return(1);
else return(0);
}
main()
{ int i,n=0,a,b,c;
for(i=100;i<=999;i++)
{ a=i/100;
b=i%100/10;
c=i%10;
if ((b+c)%10==a&&prime(i))
n++;
}
printf("Total is:%d",n);
}
2. [300,800]范围内同时满足以下两个条件的十进制数. ⑴其个位数字与十位数字之和除以10所得的余数是百位数字 ;⑵该数是素数;求满足上述条件的最大的三位十进制数。
761#include
int prime(int x)
{int i,k;
k=sqrt(x);
for(i=2;i<=k;i++)
if(x%i==0) break;
if(i>k) return(1);
else return(0);
}
main()
{int a,b,c,i,n=0;
clrscr();
for(i=800;i>=300;i--)
{ a=i/100;
b=i%100/10;
c=i%10;
if((b+c)%10==a&&prime(i)) n++;
if(n==1) break;
}
printf("%d",i);
}
3. 除1和它本身外,不能被其它整数整除的正整数称为素数(注:1不是素数,2是素数)。若两素数之差为2 ,则称两素数为双胞胎数,问[31,601]之间有多少对双胞胎数。22
#include
int prime(int x)
{ int i,k;
k=sqrt(x);
for(i=2;i<=k;i++)
if (x%i==0) break;
if (i>k) return(1);
else return(0); }
main()
{ int i,n=0;
for(i=31;i<=599;i++)
if (prime(i)&&prime(i+2)) n++;
printf("Total is:%d\n",n);
}
4. 国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对。试求6744可以分解成多少种不同的素数对(注: A+B与B+A认为是相同素数对)144
#include
int prime(int x)
{int i,k;
k=sqrt(x);
for(i=2;i<=k;i++)
if(x%i==0)break;
if(i>k) return(1);
else return(0);
}
main()
{int a,s=0;
clrscr();
for(a=1;a<=6744/2;a++)
if(prime(a)&&prime(6744-a))s++;
printf("%d",s);
}
5. 两个素数之差为2,则称这两个素数为双胞胎数。求出[200,1000]之间的最大一对双胞胎数的和。1764
#include
int prime(int x)
{int i,k;
k=sqrt(x);
for(i=2;i<=k;i++)
if(x%i==0)break;
if(i>k) return(1);
else return(0);
}
main()
{int a,s=0,max=0;
clrscr();
for(a=200;a<=998;a++)
if(prime(a)&&prime(a+2)&&(a+2)>max)max=a+2;
s=max+max-2;
printf("%d",s);
}
6. 一个素数(设为