使用函数检查c中的素数是否正确?
使用函数检查素数的代码正确吗。我没有得到任何语法错误,但无论我输入什么,它总是显示prime使用函数检查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
#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;
}