本文目录一览:
- 1、c语言求100以内的质数
- 2、C语言求100以内质数
- 3、c语言使用循环找出100之内的所有质数
- 4、C语言,编写函数判断一个整数是否为素数,在主函数中调用该函数并输出100以内的全部素数?
- 5、用C语言.判断100以内的质数用IF语句
- 6、输出100以内的质数,用c语言编写
c语言求100以内的质数
以我来看我觉得两个for循环都有问题。
首先第一个for循环应该错了。应该是i 100。因为是求100以内的,所以要循环到100。
这个程序就是利用for循环让i从2遍历到99.然后利用j找出了1和本身之外i的因数。
那么第二个for循环问题就来了,我们寻找i的因数的时候,并不需要从2一直找到i本身,只要找到i的一半就可以停止了。举个简单例子,比如我们要找98的因数,那么我们只需要找到98÷2 = 49就行了,因为49之后的数字是肯定不能整除98的。同理大于i/2之后的数字是肯定不能够整除i的。所以第二个for的条件应该是j = (i/2)而不是j。下面就简单了。如果j是i的因数,那么i%j=0. 就直接continue(顺便提一句这里是不能用break的,因为break是直接跳出了for循环,相当于直接结束了整个for循环,而此时还没有遍历到100的,应该用continue,continue就是结束当前循环并且执行i++继续下一轮循环)继续循环而不用执行print语句(这个时候代表i不是质数,因为除了1和它本身还有j这个因数。)。同理,如果从2到i/2都没有i的因数,那么就说明i没有其他因数,也就是质数了,所以print输出i。
另外补充一下:
i/j是求i除以j的商,比如11 / 3 = 3; 6 / 3 = 2
i%j是求i除以j的余,比如11 % 3 = 2; 6 % 3 = 0。
C语言求100以内质数
以我来看我觉得两个for循环都有问题。
首先第一个for循环应该错了。应该是i 100。因为是求100以内的,所以要循环到100。
这个程序就是利用for循环让i从2遍历到99.然后利用j找出了1和本身之外i的因数。
那么第二个for循环问题就来了,我们寻找i的因数的时候,并不需要从2一直找到i本身,只要找到i的一半就可以停止了。举个简单例子,比如我们要找98的因数,那么我们只需要找到98÷2 = 49就行了,因为49之后的数字是肯定不能整除98的。同理大于i/2之后的数字是肯定不能够整除i的。所以第二个for的条件应该是j = (i/2)而不是j。下面就简单了。如果j是i的因数,那么i%j=0. 就直接continue(顺便提一句这里是不能用break的,因为break是直接跳出了for循环,相当于直接结束了整个for循环,而此时还没有遍历到100的,应该用continue,continue就是结束当前循环并且执行i++继续下一轮循环)继续循环而不用执行print语句(这个时候代表i不是质数,因为除了1和它本身还有j这个因数。)。同理,如果从2到i/2都没有i的因数,那么就说明i没有其他因数,也就是质数了,所以print输出i。
另外补充一下:
i/j是求i除以j的商,比如11 / 3 = 3; 6 / 3 = 2
i%j是求i除以j的余,比如11 % 3 = 2; 6 % 3 = 0。
c语言使用循环找出100之内的所有质数
#include "stdio.h"
#define N 100
int main()
{
int i,j;
int flag;
printf("100 以内的质数有:\n");
for(i=2;i101;i++)
{
flag = 1;
for(j=2;j=i/2;j++)
if(i%j==0)
{
flag = 0;
break;
}
if(flag)
printf("%d ",i);
}
printf("\n打印完毕\n");
return 0;
}
C语言,编写函数判断一个整数是否为素数,在主函数中调用该函数并输出100以内的全部素数?
#include stdio.h
int is_prime_number(int n)
{
int i;
int result = 1;
if(n==1)
return 0;
for(i=2;in;i++)
{
if(n%i==0)
{
result = 0;
break;
}
}
return result;
}
int main()
{
int n;
printf("100以内的素数包括:\n");
for(n=1;n=100;n++)
{
if(is_prime_number(n))
{
printf("%d ",n);
}
}
printf("\n");
return 0;
}
用C语言.判断100以内的质数用IF语句
我对孙经琛同志的程序做了修改:
#include stdio.h
void main()
{
int i,k,t=0,sum=0;
int c,a[100];
c=1;
for (i=1;i=100;i++) /*设定范围100以内*/
{
for(k=1;k=i;k++) /*从1查到当前所判断的数*/
{
if (i%k==0 k!=1 i!=k) c=0; /*如果已经不满足素数条件,则将标志转0*/
}
if (c!=0) {a[t]=i;t++;} /*如果标志为1,则该质数保存入数组*/
c=1; /*初始化标志*/
}
for(i=0;it;i++)
printf("%d\n",a[i]);
getchar();
}
输出100以内的质数,用c语言编写
#includestdio.h
int main()
{
int i,j;
int count=0;
for(i=2;i100;i++)
{
for(j=2;j=i/2;j++)
if(i%j==0)//如果i能被j整除 就不是质数 退出循环
break;
if(ji/2)
{
count++;
printf("%-3d",i);
if(count%5==0)//当每一行有5个数时 换行
printf("\n");
}
}
return 0;
}
for(j=2;j=i/2;j++)中的 j=i/2是表示 从j=2开始遍历到j=i/2 看看2~i/2中能否整除i
如果都不能 说明i是质数(也就是ji/2)
如果有1个及以上能整除i 说明i不是质数
for()
{
}
//for循环结束之后 j的值是大于i/2的 因为for循环的条件是:j=i/2
//因此 当ji/2时 for循环结束
if(ji/2)
这里当且仅当2~i/2都不能整除i时 也就是ji/2 才说明i是质数
参考资料
输出100以内的质数,用c语言如何编写?.百度知道[引用时间2017-12-25]