c语言判断素数和输入一个数n代表有n行数据的问题
2016-04-12 18:29
411 查看
问题1:c语言判断素数中少一个k=(int)sqrt(n) 为什么算不出结果?
回答:
C语言一般素数判断函数
你少了 k=(int)sqrt((double)n);当然不能得到结果,它是循环的结束条件。
此外:不定义变量k,直接用n来当结束条件呢?如1到100,若用 n 要循环100次,而用平方根,只要10次。
问题2:c语言中先输入一个数n代表有n行数据输入,然后输入这n行数,如何从n行数中找出最小值?
回答:
回答:
C语言一般素数判断函数
int prime(int n) { int i,k; k=(int)sqrt((double)n); //提高效率 if (n<2) //2以下不能是素数 return 0; for(i=2;i<=k;i++) { if(n%i==0) return 0; } return 1; }
你少了 k=(int)sqrt((double)n);当然不能得到结果,它是循环的结束条件。
此外:不定义变量k,直接用n来当结束条件呢?如1到100,若用 n 要循环100次,而用平方根,只要10次。
问题2:c语言中先输入一个数n代表有n行数据输入,然后输入这n行数,如何从n行数中找出最小值?
回答:
#include <stdio.h> int main( void ) { int n; //n行 int i; //循环变量i int min; //最小值 min int temp; //临时变量 scanf("%d",&n); //读入n if(n>=1) //如果 行数n 大于等于1 { scanf("%d",&min); //读入第一个数作为最小的 for(i=2;i<=n;i++) //i为 从第2个数,到第n个数 { scanf("%d",&temp); //读这个数保存在temp变量中 if( temp<min) //如果 temp小于 前面 i-1个数的最小值 min=temp; //将当前 temp,即第i个数是目前最小的 } printf("%d\n",min); //输入最小的数min } return 0; }