这是一个很基础的入门题,不知道你这么问是为了什么,只是简单的应付交作业么?
如果你是认真在学习编程,就应该把你遇到的难点描述一下吧,而不是只是简单的抛出这么一个简单的问题。
还是给你讲讲思路吧,代码就不贴了。典型的用循环暴力破解的问题,一般用for循环实现。要求最大数,从800开始,一个一个往下减,对每一个数判断是否满足条件即可,个位用模10取得,十位先除10再模10取得,以此类推;素数最好用函数来实现,简单的办法就是用另一个for循环去判断他是不是能被除了1和他自身以外的数整除。就是这样。
///判断是否是素数
bool prime(int x)
{
int k = (int)sqrt(x+1);
int i = 0;
for(i=2; i<=k; i++)
{
if(x%i==0)
break;
}
if(i>=k+1)
return true;
return false;
}
///判断个位数字与十位数字之和除以10所得的余数是百位数字
bool parse(int num)
{
if(num>=100 && num<=999){
int g=num%10;
int s=num/10%10;
int b=num/100;
if(g+s == b)
return true;
}
return false;
}
///[300,800]范围内同时满足以下两个条件的十进制数. ⑴其个位数字与十位数字之和除以10所得的余数是百位数字 ;⑵该数是素数;求满足上述条件的最大的三位十进制数。
int main(int argc,char *argv[])
{
int begin=300,end=800,max=0;
for(begin; begin<=end; begin++){
if(prime(begin)){
if(parse(begin)){
if(begin>max)
max=begin;
}
}
}
printf("the max num: %d\n",max);
getchar();
return 0;
}
#include
int main()
{
int i,j,a,b,c,flag;
for(i=800;i>=300;i--)
{
a=i%10;b=i/10%10;c=i/100;
printf("%d %d %d\n",a,b,c);
flag=0;
if((a+b)%10!=c)continue;
for(j=2;j*j<=i;j++)
if(i%j==0){
flag=1;
break;
}
if(flag)continue;
printf("%d",i);
break;
}
}