c语言求出超级素数
请大家看看有什么问题,最后输出的是1000到9999的所有数#include"stdio.h"#include<math.h>intpanduansushu(intx){...
请大家看看有什么问题,最后输出的是1000到9999的所有数
#include "stdio.h"
#include<math.h>
int panduansushu(int x)
{
int i,j;
j=(int)sqrt(x);
for(i=2;i<j;i++)
{
if(x%i==0)
{
return 0;
}
else return 1;
}
}
void main()
{
int x=1000,a,y;
for(x=1000;x<=9999;x++)
{
y=x;
while(y>0)
{
if(panduansushu(x)==1) y=y/10;
else break;
}
if(y==0) printf("%d\n",x);
}
} 展开
#include "stdio.h"
#include<math.h>
int panduansushu(int x)
{
int i,j;
j=(int)sqrt(x);
for(i=2;i<j;i++)
{
if(x%i==0)
{
return 0;
}
else return 1;
}
}
void main()
{
int x=1000,a,y;
for(x=1000;x<=9999;x++)
{
y=x;
while(y>0)
{
if(panduansushu(x)==1) y=y/10;
else break;
}
if(y==0) printf("%d\n",x);
}
} 展开
3个回答
展开全部
在这个程序中你到底想干什么?编程序时要想想你到底要干什么,是怎么处理数据的。
第一个是判断素数函数错啦,应为:
int panduansushu(int x)
{
int i,j;
j=(int)sqrt(x);
for(i=2;i<=j;i++)
{
if(x%i==0)
{
return 0;
}
}
return 1;
}
自己理解下,是除以所有小与等于它开更的数都除不尽才是素数。
主函数不用你那么复杂,并且还是错的。
void main()
{
int x=1000,a,y;
for(x=1000;x<=9999;x++)
{
if(panduansushu(x)==1) printf("%d\n",x);
}
}
这样就可以输出1000到9999的素数啦
第一个是判断素数函数错啦,应为:
int panduansushu(int x)
{
int i,j;
j=(int)sqrt(x);
for(i=2;i<=j;i++)
{
if(x%i==0)
{
return 0;
}
}
return 1;
}
自己理解下,是除以所有小与等于它开更的数都除不尽才是素数。
主函数不用你那么复杂,并且还是错的。
void main()
{
int x=1000,a,y;
for(x=1000;x<=9999;x++)
{
if(panduansushu(x)==1) printf("%d\n",x);
}
}
这样就可以输出1000到9999的素数啦
展开全部
if(x%i==0)
{
return 0;
}
else return 1;
假如x%i!=0;就会执行return 1;
而你的本意是,所有的i都满足x%i!=0 后,执行return 1;
子函数的功能是:(1)X若能被i整除,(一旦找到)就返回 0; (2)当所有的 i都不能整除X 时,说明是 素数。 这两部分 不是if 和 else的关系。应该是 程序 执行的先后 过程。
{
return 0;
}
else return 1;
假如x%i!=0;就会执行return 1;
而你的本意是,所有的i都满足x%i!=0 后,执行return 1;
子函数的功能是:(1)X若能被i整除,(一旦找到)就返回 0; (2)当所有的 i都不能整除X 时,说明是 素数。 这两部分 不是if 和 else的关系。应该是 程序 执行的先后 过程。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
子函数最后一行的else 去掉
追问
为什么
追答
不去掉的话,取余数比较只会进行一次,你的目的是要保证从2开始到sqrt(x)之间全部比较完才能确定中间没有可以整除的数,另外我刚才没注意,要把最后返回放在for循环外面
这样:
int panduansushu(int x)
{
int i,j;
j = (int)sqrt(x);
for(i = 2; i < j ; i++)
{
if(x%i==0)
{
return 0;
}
}
return 1;
}
至于你主函数我没动,你好像要做进一步的判断,不过好像没什么意义 ^-^
关键部分是素数的判断。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询