编写程序,要求:从键盘输入一个整数 n(4≤n≤999),判断其是否为素 数,如果是素数,判断其是否回文素数。如果不是,计算小于该数的所有素数和。

编写程序,要求:从键盘输入一个整数 n(4≤n≤999),判断其是否为素 数,如果是素数,判断其是否回文素数。如果不是,计算小于该数的所有素数和。

供参考:

#include<stdio.h>
int isPrime(int n)
{
    int i;
    if (n <= 3)   return n > 1;
    for (i = 2; i * i <= n; i++)
        if (n % i == 0) return(0);
    return(1);
}
int ispalindrome(int n)
{
    int t=n, k=0;
    while (t){
        k = k * 10 + t % 10;
        t /= 10;
    }
    return k == n;
}
int main()
{
    int s=0, n;
    scanf("%d",&n);
    if (!isPrime(n) || !ispalindrome(n)){
        while (n--)
            if (isPrime(n)) s += n;
        printf("%d", s);
    }
    return 0;
}

解答如下

#include <stdio.h>
int IsPrime(int n)
{
    int i;
    if (n==2)
        return(1);
    if (n==1)
        return(0);
    for(i=2; i*i<=n; i++)
        if (n%i==0)
            return(0);
    return(1);
}
int Ishuiwenshu(int n)
{
    int tem[5],p=0;
    while(n)
    {
        tem[p++]=n%10;
        n/=10;
    }
    for(int i=0; i<p/2; i++)
    {
        if(tem[i]!=tem[p-i-1])
        {
            return 0;
        }
    }

    return 1;
}
int main()
{
    int num;
    scanf("%d",&num);
    if(IsPrime(num))
    {
        printf("是素数\n");
        if(Ishuiwenshu(num))
        {
            printf("是回文数\n");
            {
                return 1;
            }
        }
        else
        {
            printf("小于该数的所有素数和:");
            int sum=0;
            for(int i=3; i<num; i++)
            {
                if(IsPrime(i))
                {
                    sum+=i;
                }
            }
            printf("%d\n",sum);
        }
        return 1;
    }
    else
    {
        printf("不是素数\n");
    }
    return 0;
}

C求素数三种简易方法!!!
https://blog.csdn.net/zhaocx111222333/article/details/109379498

判断素数,回文数网上都有代码。