请各位帮个忙好吗?
我刚开始学C语言,有个问题想请教一下,拜托了.....谢谢!题目是:输出3到100的素数及其个数。
我编的是:(但老是得不到想要的答案)
main()
{
int n,i,s=0;
for(n=3;n<=100;n=n+1)
{for(i=2;i<n;i=i+1)
if(n%i==0)break;
if(i<n) printf();
else s=s+1;printf("%d ",n);}
printf("\ntotal=%d",s);
getch();
}
----------------解决方案--------------------------------------------------------
// 别哭, 别哭!!!
#include <stdio.h>
int main()
{
int n,i,s=0;
for(n=3;n<=100;n=n+1)
{
for(i=2;i<n;i++)
{
if(n%i==0)
break;
}
if(i==n)
{
s++;
printf("%d ",n);
}
}
printf("\ntotal=%d",s);
getchar();
return 0;
}
----------------解决方案--------------------------------------------------------
555.....太感谢了......还是书写习惯不好啊.....大括号多了层次分不清了.....
----------------解决方案--------------------------------------------------------
程序的关键还是简洁的比较好!
第二个 FOR 语句不必要到 N 因为没必要运算到那个程度!
可用这样
flot a; \*多定义一个A*\
for(n=3;n<=100;n=n+1)
{ a=sqrt(n);
for(i=2;i<=a;i++)
{
if(n%i==0)
..........
后面的就不用改了啊
我也没试!呵呵~~~~~~
不过理论上是比较这么多次就可以了!
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include<math.h>
main()
{
int n,i,s=0;
for(n=3;n<=100;n++)
{
for(i=2;i<=sqrt(n);i++)
if(n%i==0)break;
if(i>sqrt(n))
{
s++;
printf("%d\t",n);
}
}
printf("\ntotal=%d",s);
}
测试过了
没有问题的
----------------解决方案--------------------------------------------------------