Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用函数检查c中的素数是否正确?_C - Fatal编程技术网

使用函数检查c中的素数是否正确?

使用函数检查c中的素数是否正确?,c,C,使用函数检查素数的代码正确吗。我没有得到任何语法错误,但无论我输入什么,它总是显示prime #include<stdio.h> int prime(int); void main() { int n, count, a; printf("enter the number\n"); scanf("%d", &n); prime(n); if (count == 2) printf("prime"); els

使用函数检查素数的代码正确吗。我没有得到任何语法错误,但无论我输入什么,它总是显示prime

#include<stdio.h>
int prime(int);

void main() {
    int n, count, a;

    printf("enter the number\n");
    scanf("%d", &n);
    prime(n);

    if (count == 2)
        printf("prime");
    else
        printf("not prime");
}

int prime(int n) {
    int i, count = 0;
    for (i = 1; i <= n; i++) {
        if (n % i == 0) {
            count++;
        }
        return (count);
    }
}
#包括
int素数(int);
void main(){
int n,count,a;
printf(“输入数字”);
scanf(“%d”和“&n”);
素数(n);
如果(计数=2)
printf(“prime”);
其他的
printf(“非prime”);
}
整数素数(整数n){
int i,计数=0;

对于(i=1;i修改函数
prime
-

 int prime(int n) {
 int i, count = 0;
 for (i = 1; i <n; i++) {       // go till n (or better till sqrt of n)
     if (n % i == 0) {
         count++;
     }
     if(count==2){             // if count is 2 get out of loop
          break;
        }
   }
   return count;       // return out of loop
}
3.
main
中将
计数初始化为
0
。 调用函数为-

          count=prime(n);

素数函数无法正常工作。在第一个for循环中,您执行的是
n&1==0
,这始终是真的,在最后一个循环中
n%n==0
也始终是真的

int prime(int n){
  int i;
  int isPrime = 1;
  for(i=2;i<sqrt(n) && isPrime;i++){ // do the loop while 2<i<sqrt(n) and n isPrime, once you know it's not prime don't loop anymore
      isPrime = n%i; // If it's 0 then it's not prime (isPrime = 0) else it's true         
  }
  return isPrime;
}
int素数(int n){
int i;
int-isPrime=1;
对于(i=2;i
/*我只需要获取值count的输入并将其存储在变量中*/
#包括
int素数(int);
内部主(空)
{
int n,count,a,m;
printf(“输入数字”);
scanf(“%d”和“&n”);
m=素数(n);
如果(m>2)
printf(“非prime”);
其他的
printf(“prime”);
}
整数素数(整数n)
{
int i,计数=0;

对于(i=1;i一个简单函数,如果数为素数,则返回
true
,如果数为素数,则返回
false

int prime(int n){
  int i; 
  for(i= 2; i < n; i++){
    if(n % i ==0 && i != n)
      return true;  
  }
  return false;
}
int素数(int n){
int i;
对于(i=2;i
如果您查看
prime()
的结果,可能会有所帮助。
您的输出取决于
count
的值,该值未初始化,因此行为未定义。明天,您输入的内容将不会是prime。如果您不介意我说,您的
prime
函数很幼稚,因为(首先)任何大于
n
平方根的除数都将通过其其他除数进行检查。@WeatherVane没有问题,先生!!:)
/* i just needed to take input of value count and store it in a variable*/
#include<stdio.h>
int prime(int);
int main(void)
{
    int n,count,a,m;

    printf("enter the number\n");
    scanf("%d",&n);
    m=prime(n);

    if(m>2)
        printf("not prime");
    else
        printf("prime");
}
int prime(int n)
    {
    int i,count=0;
    for(i=1;i<=n;i++)
    {
        if(n%i==0)
        {
            count++;
        }

    }
    return(count);
    }
int prime(int n){
  int i; 
  for(i= 2; i < n; i++){
    if(n % i ==0 && i != n)
      return true;  
  }
  return false;
}