c语言在线请教
#include <stdio.h>#include"conio.h"void wwjt(); long fun(int n){ long i,k; long s=1; for(i=2;i<=n;i++) for(k=2;k<i;k++) { if(i%k==0) break; if(k==i) s*=i; } return s; }main() { int m; printf("Enter m: "); scanf("%d", &m); printf(" The result is %ld ", fun(m)); wwjt();} void wwjt(){ FILE *IN,*OUT; int c ; int t; long o; IN=fopen("in.dat","r"); if(IN==NULL) { printf("Read FILE Error"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("Write FILE Error"); } for(c=1;c<=5;c++) { fscanf(IN,"%d",&t); o=fun(t); fprintf(OUT,"%ld ",o); } fclose(IN); fclose(OUT);}为什么这个运行的结果一直都是1???
你的
if(k==i)
位置不对,它永远不可能相等
若k<i时, if(i%k==0) 跳出循环,执行不到if(k==i)
若k==i,循环结束了,也不能执行到if(k==i)
虽然不知你程序的目的,但估计是你的{}写错了(位置不对,且漏了)
以下改好的,可以求素数的乘积
long fun(int n) {
long i,k;
long s=1;
for(i=2; i<=n; i++) {
for(k=2; k<i; k++) {
if(i%k==0)
break;
}
if(k==i)
s*=i;
}
return s;
}