这个代码是否正确使用函数检查c中的素数?

时间:2015-09-24 16:46:55

标签: c

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

  ld: warning: directory not found for option '-L2'
  ld: 16 duplicate symbols for architecture armv7
  linker command failed with exit code 1 (use -v to see invocation)

4 个答案:

答案 0 :(得分:1)

修改您的函数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
}

在你的函数main -

1。 void main - &gt; int main(void)

2。写下if else声明,如下所示 -

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

3。count中将0初始化为main。        调用函数为 -

          count=prime(n);

答案 1 :(得分:0)

您的主要功能无法正常工作。在第一个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;
}

编辑:优化for循环,直到i = sqrt(n)

答案 2 :(得分:0)

/* 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);
    }

答案 3 :(得分:0)

如果数字是素数,则简单函数返回true,如果不是,则返回false

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