//素数函数
#include <stdio.h>
#include <math.h>
char Premier(int N){
int i;
char notpremier="Nombre n'est pas premier"; //Number is prime
char premier="Nombre est premier"; //Number isn't prime
for(i=2;i<=sqrt(N);i++){
if(N % i==0){
return notpremier;
}
else{
return premier;
}
}
}
int main() {
printf("%c",Premier(10));
return 0;
}
但是,当我选择返回int数据类型时,它可以完美地工作。
对于初学者,如果用户传递的值小于4,该函数将不返回任何值。
其次,您试图用类型为char *
的表达式初始化类型为char
的对象,因为用作右操作数的字符串字面值被隐式转换为指针。
注释也是无效的。
char notpremier="Nombre n'est pas premier"; //Number is prime
char premier="Nombre est premier"; //Number isn't prime
必须移动else语句的子语句
else{
return premier;
}
至少你需要写
char * Premier(int N){
和
char * notpremier="Nombre n'est pas premier"; //Number isn't prime
char * premier="Nombre est premier"; //Number is prime
和
for(i=2;i<=sqrt(N);i++){
if(N % i==0){
return notpremier;
}
}
return premier;
但也考虑到0
和1
不是素数。函数参数应该是无符号整数类型,例如unsigned int
,而不是有符号整数类型int
。
而不是返回字符串文字,函数应该返回一个整数:1 -传递的数字是素数,0 -传递的数字不是素数。