
C语言输出即是素数又是回文数的三位整数,按照上面的那个代码写
/* sy7-1.c */
#include <stdio.h>
#include <math.h>
int main()
{
int n, i, m, k, flag, count = 0;
for (n = 100; n < 1000; n++)
{
/* 标志flag置0 */
flag = 0;
k = sqrt((double)n);
for (i = 2; i <= k; i++)
{
if (n % i == 0)
{
flag = 1;
break;
}
}
if (flag) /* 非素数,判断下一个数 */
continue;
k = n;
m = 0;
while (k > 0)
{
m = m * 10 + k % 10; /* 求n的反序数m */
k /= 10;
}
if (m == n) /* 条件成立,则n是要找的数 */
{
printf("%d\t", n);
if (++count % 5 == 0)
printf("\n");
}
}
return 0;
}
- 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7503548
- 你也可以参考下这篇文章:在C语言中如何将一个三位数倒序输出
- 同时,你还可以查看手册:c语言-成员访问与间接 中的内容
- 除此之外, 这篇博客: 【C语言】输入两数,输出两数之间的回文素数的个数中的 【C语言】输入两数,输出两数之间的回文素数的个数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
#include<stdio.h>
//本例子仅仅适合于大于等于10以上的用例分析
int main()
{
int a,b,c;
int i,sum = 0;
int k,j = 0,y = 0,m;
printf("输入两个数:");
scanf("%d %d",&a,&b);
for(c = a; c<=b; c++)
{
//该循环判断是否具备素数的条件
for(i = 2; i<c; i++)
{
//统计取余为0的次数
if(c%i!=0)
{
sum +=1;
}
}
//判断是否为素数
if(sum == c-2)
{
m = c;
//使用一个变量保存好翻转过后的数字
while(m>0)
{
y = y*10 + m%10;
m = m/10;
}
//判断是否为回文数
if(y == c)
{
j++;
}
}
//每次循环后需要将其中的中间变量取0
sum = 0;
y = 0;
}
printf("回文素数的个数:%d",j);
}
- 您还可以看一下 CSDN讲师老师的C语言精髓之编译过程视频教程课程中的 计算机的组成部分,栈内存的特点;画出内存图,引入指针的概念小节, 巩固相关知识点
#include <stdio.h>
#include <math.h>
int main()
{
int n, i, m, k, flag, count;
m = 0;
for(n = 100; n < 1000; n++)
{
flag = 0;
k = sqrt((double)n);
for(i = 2; i <= k; i++)
if(n % i == 0)
{
flag = 1;
break;
}
if(flag)
continue;
k = n;
m = 0;
while(k > 0)
{
m = m * 10 + k % 10;
k /= 10;
}
if(m == n)
{
printf("%d\t",n);
if(++count % 5 == 0)
printf("\n");
}
}
return 0;
}