//Prime函数
#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数据类型时,它工作得很完美。
1条答案
按热度按时间rks48beu1#
对于初学者来说,如果用户要传递一个小于4的值,则函数不返回任何值。
其次,您尝试使用
char *
类型的表达式初始化char
类型的对象,因为用作右手操作数的字符串文字被隐式转换为指针。注解也无效。
你必须移动else语句的子语句
在for循环下面。
至少你要写
和
和
但也要考虑到
0
和1
不是素数,函数参数应该是无符号整数类型,例如unsigned int
,而不是有符号整数类型int
。并且,函数应返回整数,而不是返回字符串文字:1 -传递的数字是质数,0 -传递的数字不是质数。