C 我想从用户那里获取数字,然后打印它是否为素数,但我可以';在结果总是不素数的情况下,找不到什么是错误,那么问题是什么呢?

C 我想从用户那里获取数字,然后打印它是否为素数,但我可以';在结果总是不素数的情况下,找不到什么是错误,那么问题是什么呢?,c,primes,C,Primes,我想从用户那个里取一个数字,然后打印它是否素数,但我找不到什么是错误,结果总是不素数,那个么问题是什么 #include <stdio.h> int main(void) { int number; char flag = 0; printf("Please enter the number:"); scanf("%d",&number); for (int i = 1; i <= number; i++) {

我想从用户那个里取一个数字,然后打印它是否素数,但我找不到什么是错误,结果总是不素数,那个么问题是什么

#include <stdio.h>

int main(void) 
{

    int number;
    char flag = 0;

    printf("Please enter the number:");
    scanf("%d",&number);

    for (int i = 1; i <= number; i++) { 
        if (number %i == 0) {
            flag = 1;
            break;
        }
    }

    if (number==1)
        printf("%d neither prime nor not prime", number);

    if (flag==1)
        printf("%d is not prime",number);
    else
        printf("%d is prime",number);

    return 0;
}
#包括
内部主(空)
{
整数;
字符标志=0;
printf(“请输入数字:”);
scanf(“%d”和编号);

对于(int i=1;i请查看此处的循环条件:

for(int i=1;i<=number;i++)
通常,
i
只需上升到
sqrt(number)
,因为没有两个大于
number
的根的数字会导致
number


此外,如果输入的数字是
1
,则会得到三个可能输出中的两个,而不仅仅是第一个。若要解决此问题,请在
if(标志==1)之前放置一个
else

只需检查提醒是否为0或1,如果您最后除以任何数字,它将在提醒中为您提供0或1。如果提醒为1,则数字为素数或0为非素数

 #include <stdio.h>

 int main(void) 
{

int number ;
char flag=0;
printf("please enter the number:");
scanf("%d",&number);


if((number>2)&&(number%2==0))
{
 flag=1;

}
if (number==1)
{ printf("%d neither prime nor not prime", number);}
if (flag==1)
{ printf("%d is not prime",number);}
else
 { printf("%d is prime",number);}
   return 0;

}
#包括
内部主(空)
{
整数;
字符标志=0;
printf(“请输入数字:”);
scanf(“%d”和编号);
如果((编号>2)和(&(编号%2==0))
{
flag=1;
}
如果(数字==1)
{printf(“%d既非素数也非素数”,数字);}
如果(标志==1)
{printf(“%d”不是素数),数字);}
其他的
{printf(“%d为素数”,数字);}
返回0;
}

编辑以成功工作

#include <stdio.h>

int main(void) 
{

int number ;
char flag=0;
printf("please enter the number:");
scanf("%d",&number);

for(int i=2;i<number;i++)
{ 
   if(number%i==0)
   {
     flag=1;
     break;
    }
}

if (number==1)
      { printf("%d neither prime nor not prime", number);}
else if (flag==1)
     { printf("%d is not prime",number);}
else
      { printf("%d is prime",number);}

  return 0;

}
#包括
内部主(空)
{
整数;
字符标志=0;
printf(“请输入数字:”);
scanf(“%d”和编号);

对于(int i=2;我能不能请你详细说明你所展示的代码的问题?通过一些具体的输入,实际的输出是什么?预期的输出是什么?也请花一些时间阅读一些好的问题。请学习如何缩进你的代码。代码的可读性是最重要的。最后,这似乎是一个非常好的问题是时候学习如何使用调试器在监视变量及其值的同时逐条检查代码语句了。关于:
for(int i=1;iOT:为了便于可读性和理解:1)请遵循公理:每行只有一条语句,(最多)每语句一个变量声明。2)请始终缩进代码。在每个开始大括号“{”之后缩进。在每个结束大括号“}”之前取消缩进。建议每个缩进级别为4空格。我编辑了我的代码,但也有相同的错误结果,总是打印>>非素数#包含int main(void){int number;char flag=0;printf(“请输入数字:”;scanf(%d),&number);for(int i=1;iMy bad。它需要
for(int i=2;iOT:请将代码作为问题的一部分(或编辑部分)发布,而不是在评论中15%2!=0,但15不是质数,因为15%3=0,所以我认为此代码不会成功
#include <stdio.h>

int main(void) 
{

int number ;
char flag=0;
printf("please enter the number:");
scanf("%d",&number);

for(int i=2;i<number;i++)
{ 
   if(number%i==0)
   {
     flag=1;
     break;
    }
}

if (number==1)
      { printf("%d neither prime nor not prime", number);}
else if (flag==1)
     { printf("%d is not prime",number);}
else
      { printf("%d is prime",number);}

  return 0;

}