C语言 输出1到100之间的全部素数?用C语言输出100到200之间的素数

本文目录
- C语言 输出1到100之间的全部素数
- 用C语言输出100到200之间的素数
- 求100以内的最大素数c语言
- 在C语言中,用筛选法求100之内的素数用多种方法求,请附带流程图,谢谢
- c语言输出100到200之间的素数
- c语言求100-200之间的素数
- c语言中如何输出100到200之间的素数
- 用C语言求解1-100之间的所有素数
- 任意输入一个整数,判断它是否为素数c语言编程实验结果分析及心得体会
- 怎么判断1到100之间的素数用C语言程序
C语言 输出1到100之间的全部素数
有三种方法:
1、输出1-100以内的素数:
2、同样,也是输出1-100以内的素数,这个构造一个数组,将其所有元素初始化为1,表示素数,这时取x从2开始,到100以内做循环。
若x为素数,即prime=0),表示为非素数,循环结束前x+1。
3、该方法是输出100个素数,基本思想是构造一个素数表,利用函数判断每个数是否能被其之前的素数整除,如果不能,则在素数表内加上该元素,不断循环(while循环结束条件是cnt即数组个数》100)。
扩展资料:
在这个小程序中主要用到的是for循环
for 循环语句的一般形式为:
for (表达式1; 表达式2; 表达式3)
{
语句;
}
需要注意的两点:
1) 表达式1、表达式2和表达式3之间是用分号;隔开的,千万不要写成逗号。
2) for(表达式1;表达式2;表达式3)的后面千万不要加分号,很多新手都会犯这种错误——会情不自禁地在后面加分号。
因为 for 循环只能控制到其后的一条语句,而在C语言中分号也是一个语句——空语句。所以如果在后面加个分号,那么 for 循环就只能控制到这个分号,下面大括号里面的语句就不属于 for 循环了。
用C语言输出100到200之间的素数
应该是对素数的定义没有理解吧。
素数,是定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
简而言之,素数就是只能被1和它自己相乘得到的数。所以,除了1和它自己之外,它对其它数取余数,结果都不是0。
同时,无论什么数,除了它自己之外,最大的因数肯定是它的一半,所以只需要查找到它的一半就可以了,不必从1查找到它自己。而且,这里是找素数,如果它的因数包括它自己的一半与数字2的话,那它也不会是素数了,所以查找的界限定为比如 i/2 是不会有遗漏的。
至于你的原来的代码里为什么是它自己开平方,我数学记得不多了,不是太清楚。
然后,就是根据定义去判断一个数是不是素数,那么,就必须让它与从2到它的一半的所有的数的余数都不为0,反应到代码里就是不仅仅要 「i % n != 0」,而且还要全部能除的数都除一遍,也就是「 n == k」,这个时候,才能确定这个数是素数了。
#include 《stdio.h》
#include 《math.h》
int main()
{
int i, k, n, m = 0;
for (i = 101; i 《= 200; i = i + 2)
{
k = i / 2; // 被除的数,小于等于它的一半
for (n = 2; n 《= k; n++)
{
if (i % n == 0)
break;
else if (n == k) // 要把从2到k的数都除一遍才能确定
{
printf("%8d", i);
m++;
if (0 == m % 10) //把这个if输出换行放到else if里面来,要不然后面会多很多空行
printf("\n");
}
}
}
printf("\n");
return 0;
}
输出截图:
还有一张是把 i 的初始值改为 3 的输出截图,可以说是很规整了!
如有帮助,烦请点采纳,谢谢!
求100以内的最大素数c语言
#include 《stdio.h》
int main()
{
int i,t;
for(i=100;i》1;--i)
{
for(t=2;t*t《=i;++t)
if(i%t==0)
break;
if(t*t》i)
break;
}
printf("%d\n",i);
return 0;
}
在C语言中,用筛选法求100之内的素数用多种方法求,请附带流程图,谢谢
所谓筛选法,就是每一次都筛去不是素数的数,比如说现在我们知道2是素数,那么4,6,8,……就全标记为非素数,现在下一个数是3,3没有被标记,所以它是素数,并且同时将6,9,12,……全部标记为非素数,再一个数是4,已经被标记过,5没被标记,于是5是素数,同时把所有5的倍数标记……
代码如下:
#include《stdio.h》
// end with -1
void findPrime(int range,int *primeArray);
// 产生一些标记,标记该处值是否为素数
void findPrimeLabel(int range,int *labelArray);
int main()
{
// 声明最大范围
int range;
// 声明一个可以容纳比较多素数的数组
int primeArray;
int i;
printf("Input the max range:\n");
scanf("%d",⦥);
// 假设工作正常,那么primeArray所指向的就是一系列素数的指针,且最后-1结束
findPrime(range,primeArray);
for(i=0; i《100; i++)
{
if(primeArray==-1)
{
break;
}
else
{
printf("%d\n",primeArray);
}
}
return 0;
}
void findPrime(int range,int *primeArray)
{
// algorithm:
// 最小的素数是2
// 从之后开始,每次遇到是倍数的都删掉
int *labelArray=new int;
int i,j=0;
// 获得标记数组
findPrimeLabel(range,labelArray);
for(i=0; i《=range; i++)
{
// 如果标记是素数,就添加到数组中去
if(labelArray==1)
{
primeArray=i;
j++;
}
}
// 添加结束标识符-1
primeArray=-1;
delete labelArray;
}
void findPrimeLabel(int range,int *labelArray)
{
int i,j=2;
labelArray=0;
labelArray=0;
// 初始化
for(i=2;i《=range;i++)
{
labelArray=1;
}
for(i=2; i《=range; i++)
{
// 如果仍然是1,说明没被标记,则这是一个素数
if(labelArray==1)
{
// 采用一个while循环,将从2开始的倍数全部标记为0
while(i*j《=range)
{
labelArray=0;
j++;
}
j=2;
}
}
}
c语言输出100到200之间的素数
解题思路:
首先先找出来100~200以内的所有整数,再让这些整数对除了1和它本身以外的数求余,如果有能整除的就不是素数,否则就为素数。
先找出来100到200的所有整数,都为i
用i去对除了1和它本身以外的数求余。
正确的代码:
#include《stdio.h》
int main()
{
int conut = 0;
int i = 0;
for(i=100; i《=200; i++)
{
int j = 0;
for(j=2; j《i; j++)
{
if(i%j == 0)
break;
}
if(j==i)
{
conut++;
printf("%d ", i);
}
}
printf("\n");
printf("素数个数为:%d\n", conut);
return 0;
}
第二个if语句的判断条件应该是j==i;而不是i%j 。
扩展资料:
实现的其他方法:
需要用到sort函数,也就是开平方根函数。头文件为#include《math.h》。 显而易见,任何一个数,每一对因子都是由这个数开平方后的数的左右各一个组成,所以,在求余过程中,只需要对从2到开平方之后的数求余即可。遇到可以整除的就不是素数,否则就为素数。
代码:
#include《stdio.h》
#include《math.h》
int main()
{
int count = 0;
int i = 0;
for(i=100; i《=200; i++)
{
int j = 0;
for(j=2; j《=sqrt(i); j++)
{
if(i%j == 0)
break;
}
if(j 》 sqrt(i))
{
count++;
printf("%d ",i);
}
}
printf("\n");
printf("素数个数为:%d", count);
return 0;
}
c语言求100-200之间的素数
思路:先定义一个函数isp用来判断一个数是否是素数,所谓素数是除了1和自身没有其他的因数,所以从2到该数减一,判断其是否可以整除该数,如果可以该数就不是素数,否则该数就是素数。最后从100到200依次判断并输出素数。
参考代码:
#include 《stdio.h》
int fun(int n){
int i;
for(i=2;i《n;i++)
if(n%i==0) return 0;
return 1;
}
int main()
{
int i;
for(i=100;i《=200;i++)
if(fun(i))
printf("%d ",i);
return 0;
}
/*
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
*/
c语言中如何输出100到200之间的素数
逻辑错误,准确位置为14行,正确代码如下:
#include《stdio.h》
int main()
{
int i = 0;
for (i=100; i《=200; i++)
{
int j = 0;
for (j=2; j《=i-1; j++)
{
if (i%j == 0)
{
break;
}
}
if (j》=i)
{
printf("%d",i);
}
}
return 0;
}
扩展资料:
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
质数的个数是无穷的。欧几里得的《几何原本》中有一个经典的证明。它使用了证明常用的方法:反证法。具体证明如下:假设质数只有有限的n个,从小到大依次排列为p1,p2,……,pn,设N=p1×p2×……×pn,那么,
是素数或者不是素数。
如果
为素数,则
要大于p1,p2,……,pn,所以它不在那些假设的素数集合中。
如果 为合数,因为任何一个合数都可以分解为几个素数的积;而N和N+1的最大公约数是1,所以不可能被p1,p2,……,pn整除,所以该合数分解得到的素因数肯定不在假设的素数集合中。因此无论该数是素数还是合数,都意味着在假设的有限个素数之外还存在着其他素数。所以原先的假设不成立。也就是说,素数有无穷多个。
其他数学家给出了一些不同的证明。欧拉利用黎曼函数证明了全部素数的倒数之和是发散的,恩斯特·库默的证明更为简洁,哈里·弗斯滕伯格则用拓扑学加以证明。
用C语言求解1-100之间的所有素数
Action()
{
int i,j;
int sum=0;
int flag;//是否为素数
for(i=2;i《=100;i++){
flag=1;
for(j=2;j《=i-1;j++){
if(i%j==0){
flag=0;
break;
}
}
if(flag==1){
sum+=i;
}
}
lr_output_message("sum=%d",sum);
return 0;
}
输出的结果:sum=1060
扩展资料:
方法二、使用函数:
Action()
{
int i;
int sum=0;
for(i=2;i《=100;i++){
if(isPrime(i)){
sum+=i;
}
}
lr_output_message("素数之和sum=%d",sum);//loadrunner的输出,其他编译器可能是printf
return 0;
}
int isPrime(a){
int j;
int flag=1;
for(j=2;j《=a-1;j++){
if(a%j==0){
flag=0;
break;
}
}
return flag;
}
任意输入一个整数,判断它是否为素数c语言编程实验结果分析及心得体会
给你一个判断素数的函数吧
你应该孝蚂坦就可以懂了吧
在主函数调用它就好,后面那个我原来题物则目的要求可以忽略掉哈哈哈哈
就巧桐是当它求余不等于0时flag才不变,所以它是素数。
怎么判断1到100之间的素数用C语言程序
//1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
//2.程序源代码:
#include
"stdio.h"
#include
"math.h"
main()
{
int
m,i,k,h=0,leap=1;
printf("\n");
for(m=1;m《=100;m++)
{
k=sqrt(m+1);
for(i=2;i《=k;i++)
if(m%i==0)
{
leap=0;break;
}
if(leap)
{
printf("%-4d",m);
h++;
if(h%10==0)
printf("\n");
}
leap=1;
}
printf("\nThe
total
is
%d",h);
return
0;
}

更多文章:
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00
activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)
2026年10月14日 20:30
excel连接sql数据库教程(excel怎么连接sql数据库)
2026年10月14日 19:40






