C中的素数:运行时错误 #包括 intisprime(intn){ int ndiv=0; int i; 对于(i=1;i

C中的素数:运行时错误 #包括 intisprime(intn){ int ndiv=0; int i; 对于(i=1;i,c,function,loops,primes,C,Function,Loops,Primes,这里是一个如何使用printf的小示例。您可以找到更多格式说明符 #包括 int main() { INTA=97; int b=98; char hello[6]=“世界”; printf(“%d\n”,a); printf(“%d\n”,b); printf(“%s\n”,您好); 返回0; } 这是因为您打印变量的方法错误。以下是正确的方法 #include <stdio.h> int main() { int a = 97; int b = 98;

这里是一个如何使用
printf
的小示例。您可以找到更多格式说明符

#包括
int main()
{
INTA=97;
int b=98;
char hello[6]=“世界”;
printf(“%d\n”,a);
printf(“%d\n”,b);
printf(“%s\n”,您好);
返回0;
}

这是因为您打印变量的方法错误。以下是正确的方法

#include <stdio.h>

int main()
{
    int a = 97;
    int b = 98;
    char hello[6] = "world";
    printf("%d\n", a);
    printf("%d\n", b);
    printf("%s\n", hello);
    return 0;
}
  • printf
    中的
    f
    代表“格式”。您需要为打印提供格式字符串:
    printf(“%d\n”,a)
  • 您的
    isPrime
    效率低下:您不需要尝试一直除以数字本身。一旦达到数字的平方根,您就可以停止
  • 此外,一旦你看到这个数字不是素数,你可以提前退出循环

一旦您修复了这些错误,您的程序将开始运行并产生预期的输出。

我不是C/C++专家,但请尝试

int main(){
  int a = isPrime(7);
  printf("%d",a);
}
%d是一个格式占位符,本质上是一个整数


这看起来像是一个有趣的iPrime函数。效率不是很高,但与我在过去看到的不同。你也可以循环1到n之间的所有数字,如果你找到任何除数n,只返回false(或0)。或者查找更有效的算法。

printf(a)
-这不是您如何使用的
printf
它是否总是应该是“%d”和“%a?”当有疑问时,请阅读文档。如果您首先检查n%2==0,则效率更高。如果不是,则循环
for(i=3;i
int main(){
  int a = isPrime(7);
  printf("%d",a);
}
printf("%d", a);