cghhgccc 2022-02-11 10:23 采纳率: 50%
浏览 41
已结题

输出所有7位的回文素数(首位不为0,从左到右读与从右到左读都是一样,这个数就叫做回文数).如:7069607、9989899就是符合这种要求的两个数。

以下是本人写的代码,但是时间太长了,要求在800ms以内。希望友友们帮帮忙!


#include <stdio.h>
#include <math.h>
int isPrime(int n);
int isHui(int n);
int main(void){
  int i;
  for(i=1003001;i<=9989899;i++){
    if(isPrime(i)&&isHui(i)){
      printf("%d\n",i);
    }
  }
  return 0;
}
int isPrime(int n){
  int i;
  for(i=2;i<=sqrt(n);i++){
    if(n%i==0){
      return 0;
    }
  }
  return 1;
}
int isHui(int n){
  int i,a[7];
  for(i=0;i<7;i++){
    a[i]=n%10;
    n/=10;
  }
  if((a[0]==a[6])&&(a[1]==a[5])&&a[2]==a[4]){
    return 1;
  }
  return 0;
}
  • 写回答

1条回答 默认 最新

  • [PE]经典八炮 2022-02-11 10:51
    关注

    sqrt(n)可以放到循环外面,避免重复计算
    主函数的循环可以一次加二,因为除2以外只有奇数是质数
    循环中的if最好先判断isHui,因为回文数计算量小,而且比质数少很多,根据&&的短路性质,第一个条件不成立,就不会计算第二个条件。
    实在不行,你可以先算出来,因为这个没有输入,答案固定,提交到网站的时候直接输出答案,用来糊弄这种网站很有用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月19日
  • 已采纳回答 2月11日
  • 创建了问题 2月11日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址