#include<stdio.h>
#include<math.h>
int prime(int n){
int i;
if(n<2){
return 0;
}
for(i=2;i<=sqrt(n);i++){
if(n%i==0){
return 0;
}
}
if(i>=sqrt(n)){
printf("素数:%d
",n);
return 1;
}
}
void main(){
int i,n,count=0;
while(1){
printf("请输入一个整数:");
scanf("%d",&n);
for(i=0;i<=n;i++){
count+=prime(i);
}
printf("整数%d有%d个素数因子
",n,count);
}
}
备注: for(i=2;i<=sqrt(n);i++){
if(n%i==0){
return 0;
}
}
这段代码中,判断是不是素数不能用break,必须用return 0,不然后面的count会是一个很奇怪的大数字!不要问我是怎么知道的,血的教训!