如何编写一个关于素数的程序

[复制链接]
查看11 | 回复1 | 2005-10-25 23:24:05 | 显示全部楼层 |阅读模式
二楼的程序如果输入2会怎么样?好象判定为非负数#include #include "math.h"bool isPrime(int valu);int main(){
int number = 1;
while(number!=0)
{
scanf("%d",&number);
if(number <= 0)
break;
if(isPrime(number))
printf(......);
else
printf(......);
}
return 0;}bool isPrime(int valu) //返回flase为非素数,true为素数{if(valu==1 || valu%2 == 0)
return flase;if(valu==2 || valu==3)
return true;int i, flag=sqrt(valu)+1;for (i=3;i<=flag;i += 2)
if (valu%i == 0) return flase;return true;} /*思路和上面差不多吧,解决了几个边界值(0~3,另外把负数也作为退出条件),改变循环结构为了不去判断非法数据在bool()中用了一些特殊值的判断,但是效率提高了一半左右(当valu比较大的时候),我觉得是值得的对于特别大的valu,用一个线性表(数组就行了吧)存储小于其开方的质数应该是比较高效的,有兴趣不妨试试*/
回复

使用道具 举报

千问 | 2005-10-25 23:24:05 | 显示全部楼层
使用什么语言?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行