梁山伯与茱莉蔻
2019-12-08 14:48
采纳率: 100%
浏览 582

请问我为什么没有输出结果?

题目描述
如果一个正整数是素数,它的反位数也是素数,这称这样的数称为绝对素数。编写程序判断输入的正整数是否为绝对素数。是,输出 1 , 否则输出0 .

输入描述
第一行一个正整数 n(n < 10000)表示数据的组数
接下来的 n 行每行一个正整数,需要判断是否为绝对素数
输出描述
每个数占一行,1 表示是绝对素数,0表示不是绝对素数
样例输入
2
17
41
样例输出
1
0
`#include<stdio.h>
#include<math.h>
int main ()
{
int j,k,m,n,r,i,t=0;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
j=sqrt(m);
for(i=0;i<=j;i++)
{
if(m%i==0)
printf("0\n");
}
if(m%i!=0)
{
while(m!=0)
m=m%10;
t=t*10+m;
m=m/10;
k=sqrt(t);
for(i=0;i<=k;i++)
{
if(t%i==0)
printf("0\n");
else
printf("1\n");
}
}
return 0;
}
}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • @矛盾综合体 2019-12-08 15:13
    已采纳

    for(i=0;i<=j;i++)
    {
    if(m%i==0)//i不能从0开始,尽管不是除数,但是原理类似,取余一样不能针对0,至少从1开始,而且设计好像有点不合理,你可以百度一下,这样的答案应该很多,基本思路:先判断正的是否可以,不可以直接返回,可以,然后对数取反,然后再判断,个人建议可以写两个子函数,一个判断
    一个数是否符合要求,一个用于取反

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 肥宅汤姆 2019-12-08 15:30

    用语句检查看看程序怎么运行的就可以啦。

    评论
    解决 无用
    打赏 举报
  • lzl_Avery 2019-12-09 14:07

    #include
    #include
    int fun(int n){//求反数
    int s=0;
    while(n!=0){
    s=s*10+n%10;
    n/=10;
    }
    return s;
    }
    int fun1(int n){//判断是否素数
    int i;
    if(n==2) return 1;
    else if(n==1||n==0)return 0;
    else{
    for(i=2;i<=sqrt(n);i++){
    if(n%i==0){
    return 0;
    }
    }
    return 1;
    }
    }
    int main ()
    {
    int n,m;
    scanf("%d",&n);
    while(n--)
    {
    scanf("%d",&m);
    if(fun1(m)&&fun1(fun(m)))
    printf("1\n");
    else
    printf("1\n");
    }
    return 0;
    }

    评论
    解决 无用
    打赏 举报
  • qq_15940201 2019-12-09 17:59

    两个问题

    1.求反数的时候没有用花括号括起来
    while(m!=0)
    m=m%10;
    t=t*10+m;
    m=m/10;

    2.求是否素数应该判断输入是否小于2,大于2的循环应该从2开始

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题