判断素数之经验教训


#include <stdio.h>
#include <math.h>

int main()
{
    int n,i,flag=0;
	int j;
	double obj;
    scanf("%d",&n);
    if(n<=10)
    {
    	for(i=0;i<n;i++)
    {
    	
    	scanf("%lf",&obj) ;
    	if(obj==1)
    	{
    		
    		printf("No\n");
    		continue;
		}
    	for(j=2;j<=sqrt(obj);j++)
    	{
    	
    		if((int)obj%j==0)
    		{
    	
    	    break;
				}
		}
		
	
		if(j==(int)sqrt(obj)+1)
		printf("Yes\n");
		else
		printf("No\n");
			
	}
    
	}
    
   
    return 0;
}

/* !!!值改变了 
yaoqiu:
1,个数为正整数,且小于11
2,被判断数挺大的,用double
3,输出Yesor No

1:scanf确定end,用for循环相应次数
2:若为1,2,Yes 
若用for循环从2循环到n-1看是否能整除
能就count++
3,根据cou判断yesorno 

 */

这道编程题需要注意的有几点:

1,sqrt()的输入输出都为double类型,不要把整型放进去了,说起来math库里面的函数如pow()也是一样,这点下次接触math.h的函数需要注意。

2,承接上点,当有double类型代替int类型表示整数时要活用(int)强制转化。

3,遍历判断时应该尽可能地缩小范围,如这里的使用平方根,当目标值较大的时候可以很好的缩短运行时间。

4,当使用变量值来决定最后的输出时,要注意变量值的重置,否则没有再次的初始化的话,对以0和有为标准的判断会产生影响,(前面有了后面就都有了)。当然理论上可以尝试变化标准。

5,求余操作要求int类型!!!

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值