此代码是否正确使用函数检查素数。我没有得到任何语法错误,但无论我输入什么,它总是显示为素数。
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)
答案 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;
}