‘壹’ C语言编程、求100以内所有质素数
楼主大括号都未能匹配,{有两个,}有三个,编译就通过不了的。
刚写了份代码,已调试通过,供楼主参考:
#include
<stdio.h>
main(void)
{
int
i,t;
for(i=1;
i<=100;
i++)
{
if(i
==
1)
continue;
if(i
==
2)
{
printf("%d,",i);
continue;
}
for(t=2;
t
<=
i/2;
t++)
{
if((i%t)
==
0)
break;
}
if(t
>
i/2)
{
printf("%d,",i);
}
}
printf("\n");
return
0;
}
输出的结果为:2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,
再说说楼主代码中一些错误:
1.之前提到编译上就不能通过。{和}个数未能匹配。
2.
if(100%i!=0)
break;
该语句的含义是100除以i的余数不等于0则跳出循环,当为1时,就已经跳出循环了。而且这对于质素的判断是毫无意义的,可以删除。
3.
for(t=1;t<=i;t++)
质数的判断的话,t应该是从2开始计数的,否则i%1肯定是等于0的。应修改为for(t=2;
t<=i;
t++)。此外,这里可以参考我的代码,t<=i/2即可,用以提高提升效率。
希望对楼主有所帮助。谢谢。
‘贰’ 一道关于求素数的c语言编程题目!!
#include<stdio.h>
void main()
{ int susu(int a);
int num,i,j;
printf("请输入数:");
scanf("%d",&num);
i=num+1;
j=num-1;
while(!susu(i))
i=i+1;
while(!susu(j))
j=j-1;
if(i-num==num-j)
printf("%dand%d",i,j);
else if(i-num<num-j)
printf("%d",i);
else
printf("%d",j);
}
int susu(int a)
{ int i;
for(i=2;i<a;i++)
if(a%i==0)
break;
if(i<a)
return 0;
else
return 1;
}
‘叁’ 用C语言写出求素数的编程
参考代码:
int main(){
int num,m,n,d,c,priSum;
printf("Enter the Range Between m,n ");
scanf("%d %d", &m,&n);
for (num = n; num <= m; num++)
{
for(d = 2; d < num; d++)
{
if (num % d == 0){
continue;
}
}
if (d == num){
priSum += d;
c++;
}
}
printf("m~n之间的素数个数:%d,和 %d ",c,priSum);
return 0;
}
‘肆’ C语言编程 求素数 求解释
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m); //一个数不是素数,那么开平方也一定不是素数。
//将一个数开平方再取整,可以减少比较次数,提高运行效率。
for(i=2;i<=k;i++)//一个一个比较看这个数能不能除尽小于它的所有数
if(m%i==0) //如果可以除尽这个数,那么就跳出循环
break;
if(i>=k+1) //如果i>=k+1 说明一直循环到最后了,中间没有可以除尽的数,这个数就是素数
printf("%d is a prime number\n",m);
else //相反就不是素数
printf("%d is not a prime number\n",m);
system("pause");
}
‘伍’ C语言程序设计求素数
在程序的开头加入#include<math.h>
下面是fun函数:
int fun(int mm,int b[MAX])
{
int i,mmm,n=0;
for(mmm=2;mmm<=mm;mmm++)
{
for(i=2;i<=sqrt(mmm);i++)
if(mmm%i==0) break;
if(i>sqrt(mmm))
{
b[n]=mmm;
n+=1;
}
}
return n;
}
分析:
如果mm<=1,外循环不启动,直接返回n,此时n=0
如果mm=2,外循环启动,内循环i<=sqrt(mmm)的条件不满足,不启动,内循环下面的判断条件满足,于是让b[n]=mmm,n+=1,即找到一个符合条件的素数,此时b[n]既b[0]=2,然后n+=1,表示符合条件的素数的个数加1
同样,当mm=3的时候,内循环由于条件不满足,是不会执行的,但是在内循环下面的条件判断都满足,所以会把结果保存在n和b[n]里面,这时,外循环要执行2次
当mm>3时,内循环也会启动,但是要等内循环结束之后i的值满足条件的才是素数,程序的可靠信完全可以放心
刚刚又重新分析了一遍代码,稍微改了改,没问题了
‘陆’ 求素数的C语言程序!
素数,也叫质数,就是指除了1和该数本身以外,不能被其他任何整数整除的正数。
#include<stdio.h>#include<math.h>voidmain(){intm,k,i,n=0;for(m=1;m<=200;m=m+2){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1){printf("%5d",m);n=n+1;‘柒’ C语言编写一个程序判断一个数是否为素数急求
目的:判断一个数是否为素数
#include<stdio.h>
intmain(void)
{
int m;
inti;
scanf("%d",&m);
for(i=2;i< m;i++) //2到(m-1)的数去除m
{
if(m%i==0)//判断能否整除
break;
}
if(i== m)
printf("YES!
");
else
printf("No!
");
}
for循环的功能:
①若能整除,通过break跳出函数;
②若一直到m-1都不能整除,此时i再自增1到m,不满足i< m跳出for循环,这时i= m。
(7)求素数的c语言编程扩展阅读:
素数定理:
1、在一个大于1的数a和它的2倍之间(即区间(a,2a]中)必存在至少一个素数。
2、存在任意长度的素数等差数列。
3、一个偶数可以写成两个合数之和,其中每一个合数都最多只有9个质因数。(挪威数学家布朗,1920年)。
4、一个偶数必定可以写成一个质数加上一个合成数,其中合数的因子个数有上界。(瑞尼,1948年)。
5、一个偶数必定可以写成一个质数加上一个最多由5个因子所组成的合成数。后来,有人简称这结果为(1+5)(中国潘承洞,1968年)。
6、一个充分大偶数必定可以写成一个素数加上一个最多由2个质因子所组成的合成数。简称为(1+2)。
‘捌’ 用C语言编1到100之间的素数程序
程序及解释如下:
首先判断素数的算法:用一个数分别去除以2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
则有如下程序
{ int m,k,i;
for(m=1;m<=100;m=m+2) //m=m+2,因为偶数都不是素数,不用考虑,所以每次m+2.
{ k=sqrt(m) //先求这个数的平方跟
for(i=2;i<=k;i++) //然后用i(从2到k,即m的平方跟)去除m,
if(m%i==0) break; //如果能被整除, 则不是素数,break
if(i>=k+1) pritnf("%d",m); //如果i>k+1,则说明没有数能整除m.则m是素数
}
}
(8)求素数的c语言编程扩展阅读:
素数被利用在密码学上,所谓的公钥就是将想要传递的信息在编码时加入质数,编码之后传送给收信人,任何人收到此信息后,若没有此收信人所拥有的密钥,则解密的过程中(实为寻找素数的过程),将会因为找质数的过程(分解质因数)过久,使即使取得信息也会无意义。
在汽车变速箱齿轮的设计上,相邻的两个大小齿轮齿数设计成质数,以增加两齿轮内两个相同的齿相遇啮合次数的最小公倍数,可增强耐用度减少故障。
在害虫的生物生长周期与杀虫剂使用之间的关系上,杀虫剂的质数次数的使用也得到了证明。实验表明,质数次数地使用杀虫剂是最合理的:都是使用在害虫繁殖的高潮期,而且害虫很难产生抗药性。
以质数形式无规律变化的导弹和鱼雷可以使敌人不易拦截。
多数生物的生命周期也是质数(单位为年),这样可以最大程度地减少碰见天敌的机会。
参考资料:网络 素数
‘玖’ 求素数的c语言程序
// 素数,也叫质数,就是指除了1和该数本身以外,不能被其他任何整数整除的正数#include<stdio.h>#include<math.h>void main(){ int m, k, i, n=0; for(m=1; m <= 200; m=m+2) { k = sqrt(m); for(i=2; i <= k; i++) if(m % i == 0) break; if(i >= k + 1) { printf("%5d",m); n = n + 1; } }}请放心使用,有问题的话请追问
满意请及时采纳,谢谢,采纳后你将获得5财富值。
你的采纳将是我继续努力帮助他人的最强动力!
‘拾’ c语言编程求素数(也即是质数)
#include <stdio.h>
void main()
{ int x;
int i,f;
f=0;
scanf("%d",&x);
for(i=2;i<x/2+1;i++)
if(x%i==0) { f=1; break;}
else {f=0; continue;}
if(f) printf("%d不是素数\n",x);
else printf("%d是素数\n",x);
system("pause");
}
比之前的少一般的计算量