关于素数
#include<stdio.h>int main()
{
int n,i=2;
for(n=i;n<=100;n++)
for(;i<=10;i++)
if((n%i)!=0)
{
printf("%d",n);
return 0;
}
结果:2 2 2 2 2 2 2.
题目要求:输出100以内的所有素数
求问问题在哪儿 #include <stdio.h>
int main()
{
int n, i = 2, flag;
for (n = 2; n <= 100; n++)
{
flag = 1;
for (; i <= (n / 2); i++)
{
if ((n % i) == 0)
{
flag = 0;
}
}
if (flag)
printf("%d ", n);
i = 2;
}
return 0;
} 不是很理解你这些代码的意思...
而且有两个"{"
却只有一个"}"居然不会报错的嘛?
感觉你的整体思路都很乱.... #include<stdio.h>
int main()
{
int n,i;
for(n=2;n<=100;n++)
{
for(i=2;i<n;i++)
{
if(n%i==0)
break;
}
if(n==i)
printf("%d",n);
}
return 0;
} #include<stdio.h>
int main()
{
int n,i=2;
for(n=i;n<=100;n++)
for(;i<=10;i++)
if((n%i)!=0)
printf("%d",n);
return 0;
}
你这个i相当于第二个for语句i的全局变量
所以当n=2是 里面的for执行9次,1次判断为0,8次为1,所以输出有八个2,这时候i已经等于11,i=11;
所以当n=3~100时 ,i一直比n大,判断一直为0 1、先解释一下什么是素数(质数):只能被1和自己本身整除的数是素数。
例如:3、7、11、13........
还有素数不可能偶数。#include <stdio.h>
#include <math.h>
int main()
{
int n,k,i,m=0;
for(n=1;n<101;n+=2)//n每次自增2是确保判断的数位奇数
{
k=sqrt(n);//开平方的话就可以大大减少循环次数,因为1个数可以被两个数相乘
for(i=2;i<=k;i++)
{
if(n%i==0)//判断n是否为素数
break;
}
if(i>=k+1)
printf("%d,",n);
}
return 0;
}
这涉及到充分条件和必要条件。比如说。100能被五整除,所以它一定不是素数。100不能被三整除。但他不一定是素数。只有当一个数不能被大于1,且小于它本身的所有数整除时,它才是素数,重点是所有 你的代码还有一个问题,就算一个数是素数,你也不需要重复打印。在打印后应该使用break跳出循环。
页:
[1]