c语言100以内的质数
⑴ c语言编程,1到100,求质数,谁能帮帮我啊,网上找的,不完整,看不懂,毫无思路
#include<stdio.h>
#include<math.h>
intf(intn)
{
inti;
//素数标准:只能被自己和1整除的数字
for(i=2;i<=sqrt(n);i++)
{
//能被其他数整除,就不是素数
if(n%i==0)
return0;
}
return1;
}
intmain()
{
inti,k=0;
printf("1至100之间的素数从小到大分别为: ");
for(i=2;i<=100;i++)
{
//依次判断所有数字是否为素数
if(f(i))
{
k++;
printf("%d ",i);
}
}
printf(" 总共%d个。 ",k);
return0;
}
⑵ 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>
int main()
{
int i=0;
int count=0;
for(i=0;i<=100;i++)
{
int j=0;
for(j=2;j<=i;j++)
{
if(i%j==0)
{
break;
}
}
if(i==j)
{
count++;
printf("%d ",i);
}
}
printf(" count=%d ",count);
return 0;
}
解题思路:
素数,就是除了1和他本身,不能被其他数整除的数字。答案就是用100到200之间的每个数字,除以2到其本身前面的那一个数字,如果此过程中出现整除的现象,则该数不是素数。如果没有整除的现象,则该数为素数输出。
(3)c语言100以内的质数扩展阅读:
质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。
质数的个数是无穷的。欧几里得的《几何原本》中有一个经典的证明。它使用了证明常用的方法:反证法。具体证明如下:假设质数只有有限的n个,从小到大依次排列为p1,p2,……,pn,设N=p1×p2×……×pn,那么,要大于p1,p2,……,pn,所以它不在那些假设的素数集合中。
⑷ 求1到100中所有的质数的C语言程序
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
大哥大姐帮忙呀!
解析:
#include <stdio.h>
#include <math.h>
bool IsPrime(int n);
void main(void)
{
for (int i = 2; i <= 100; i ++)
{
if (IsPrime(i))
{
printf("%d是质数\r\n", i);
}
}
}
bool IsPrime(int n)
{
int nRoot = int(sqrtf(n));
for (int i = 2; i < nRoot; i ++)
{
if (n % i == 0)
return false;
}
return true;
}
⑸ 用C语言输出100之间的所有质数
1、首先新建一个空白的c语言文件,引入头文件,头文件中包括math库,稍后会用到,建立主函数: