c语言用筛法求之N内的素数.
答案:3 悬赏:0 手机版
解决时间 2021-01-20 09:32
- 提问者网友:半生酒醒
- 2021-01-19 08:38
c语言用筛法求之N内的素数.
最佳答案
- 五星知识达人网友:千夜
- 2021-01-19 10:00
你是不是刚开始学习编程啊,里面的低级错误很多
#include
int main ()
{
int n,i,j,k,t,a ,b,s[100];
printf("please input a number:");//要求外部输入的时候最好能有打印提示
while (scanf ("%d",&n)!=EOF) //输入直接作为while的判断条件其实不太好,不过如果没有恶意输入的话就这样也可以
{
t=0;
if (n==2)
printf ("2\n");
else
{
for (j=2;j {
b = 0; //每次循环开始,b都需要初始化,否则if(b!=1)可能判断的是一个没有初始化的值。
for (i=2;i {
a=j%i;
if (a==0)
{
b=1;
break;
}
}
if (b!=1)
{
s[t]=j;
t++;
}
}
for (k=0;k {
printf ("%d\n",s[k]); //低级错误,打印的是s[k]
}
printf("please input another number:");
}
}
return 0;
}
#include
int main ()
{
int n,i,j,k,t,a ,b,s[100];
printf("please input a number:");//要求外部输入的时候最好能有打印提示
while (scanf ("%d",&n)!=EOF) //输入直接作为while的判断条件其实不太好,不过如果没有恶意输入的话就这样也可以
{
t=0;
if (n==2)
printf ("2\n");
else
{
for (j=2;j
b = 0; //每次循环开始,b都需要初始化,否则if(b!=1)可能判断的是一个没有初始化的值。
for (i=2;i
a=j%i;
if (a==0)
{
b=1;
break;
}
}
if (b!=1)
{
s[t]=j;
t++;
}
}
for (k=0;k
printf ("%d\n",s[k]); //低级错误,打印的是s[k]
}
printf("please input another number:");
}
}
return 0;
}
全部回答
- 1楼网友:鸽屿
- 2021-01-19 12:10
100以内的素数(除了2)都不能被2 ,3, 5, 7 整出。可以利用这个规律进行筛选。
- 2楼网友:思契十里
- 2021-01-19 10:59
错误相当的多#include
int main ()
{
int n,i,j,k,t,a,b,s[100];//最多只能存100个素数。有说n的最大值吗? 如果n最大超过546 这里会出错
while (scanf ("%d",&n)!=EOF)
{
t=0;
if (n==2)
printf ("2 ");
else
{
for (j=2;j
b = 0;//每次标志b要初始化一下 不然判断会出错
for (i=2;i
a=j%i;
if (a==0)
{
b=1;
break;
}
}
if (b!=1)
{
s[t]=j;
t++;
}
}
for (k=0;k
printf ("%d ",s[k]);//用%d 打印s[k] 而不是s[t]
}
}
}
return 0;
}
而且怀疑算法用错了。
不知道你们老师告诉的筛法是什么样子的 我的理解应该用素数筛才对
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯