心之回音 2021-10-24 10:24 采纳率: 33.3%
浏览 74
已结题

求不超过1000的回文素数。

请问我这样编程的错误在哪里?烦请大家指出,不胜感激!

#include<stdio.h>
int Isprime(int x);
int main()
{
    printf("Following are palindrome primes not greater than 1000:\n");
    int i,ret;
    int a,b;
    for(i=2;i<=1000;i++)
    {
        ret=Isprime(i);
        if(ret!=0&&ret>10&&ret<100)
        {
            a=ret/10;
            b=ret%10;
            if(a=b)
            {
                printf("%d\t",ret);
            }
            else
            {
                ;
            }
        }
        else if(ret!=0&&ret>99&&ret<1000)
        {
            a=ret/100;
            b=ret%10;
            if(a=b)
            {
                printf("%d\t",ret);
            }
            else
            {
                ;
            }
        }
        else
        {
            ;
        }
    }
}

int Isprime(int x)
{
     int i;
    int result=0;
    for(i=2;i<=x/2;i++)
    {
        if(x%i==0)
        {
            x=0;
            break;
        }
    }
    result+=x;
    return result;
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-10-24 12:33
    关注

    主要问题在第15行 第28行,判断相等是用'==' ,代码里是赋值‘=’,修改如下,供参考:

    #include<stdio.h>
    int Isprime(int x);
    int main()
    {
        printf("Following are palindrome primes not greater than 1000:\n");
        int i,ret;
        int a,b;
        for(i=2;i<1000;i++) //for(i=2;i<=1000;i++)
        {
            ret=Isprime(i);
            if(ret!=0&&ret>9&&ret<100) //if(ret!=0&&ret>10&&ret<100)
            {
                a=ret/10;
                b=ret%10;
                if(a==b)  //if(a=b)
                {
                    printf("%d\t",ret);
                }
                //else
                //{
                //    ;
                //}
            }
            else if(ret!=0&&ret>99&&ret<1000)
            {
                a=ret/100;
                b=ret%10;
                if(a==b)   //if(a=b)
                {
                    printf("%d\t",ret);
                }
                //else
                //{
                //    ;
                //}
            }
            //else
            //{
            //    ;
            //}
        }
        system("pause");
        return 0;
    }
    int Isprime(int x)
    {
        int i;
        int result=0;
        for(i=2;i<=x/2;i++)
        {
            if(x%i==0)
            {
                x=0;
                break;
            }
        }
        result+=x;
        return result;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月1日
  • 已采纳回答 10月24日
  • 创建了问题 10月24日

悬赏问题

  • ¥15 请问有会的吗,用MATLAB做
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示