Ⅰ 求素数的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语言求素数代码
方法有2个:
1、判断n是否能被2~√n间的整数整除
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
double k;
scanf("%d", &n);
k = sqrt(n);
for (i = 2; i <= k;i++)
{
if (n%i == 0) break;
}
if (i <=k) printf("This is not a prime.");
else printf("This is a prime");
return 0;
}
(2)c语言求素数结果有4扩展阅读:
C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。
判断语句(选择结构):
if 语句:“如果”语句;if—else 语句:“若…(则)…否则…”语句;switch 语句:“切换”语句;switch—case:“切换—情况”语句。
循环语句(循环结构):
while 语句:“当…”语句;do—while 语句:“做…当…(时候)”语句;for 语句:条件语句(即“(做)…为了…”语句)。
跳转语句(循环结构:是否循环):
goto 语句:“转舵”语句,也称“跳转”语句;break 语句:“中断”(循环)语句,即结束整个循环;continue 语句:“继续”语句(结束本次循环,继续下一次循环);return 语句:“返回”语句。
需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成。
2、每个源文件可由一个或多个函数组成。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。(结构体、联合体、枚举型的声明的“}”后要加“ ;”。)
6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
书写规则
1、一个说明或一个语句占一行。
2、用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。
3、低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。
Ⅲ C语言求4到100的素数
#include<stdio.h>
#include<math.h>
void main()//main前面要有数据类型
{
double i;//i要被开方,应该用double类型
int k=2,n,flag;
for(i=4;i<=100;i++)
{
n=(int)sqrt(i);
flag=0;
while(k<=n&&flag==0)
{
if(i%k==0) flag=1;
else k++;
}
if(flag=0) printf("%d,",i);//将输出语句放在for循环里面就可以了
}
//if(flag=0) printf("%d,",i);
//在这里for循环已经结束,这时的i=100,flag=1,当然不会被输出
}
Ⅳ C语言求四位可逆素数
#include"stdio.h"
intprime(intn){//素数判断
inti;
if(!(n&1))
return0;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return0;
return1;
}
intmain(intargc,char*argv[]){
intn,k;
for(k=0,n=1001;n<10000;n+=2)
if(prime(n)&&prime(n/1000+n/100%10*10+n/10%10*10+n%10*10))
printf(++k%10?"%5d":"%5d ",n);
if(k%10)
printf(" ");
return0;
}
运行结果:
Ⅳ C语言如何求素数
若x不是素数,
则
x=a*b,
我们可以要求
a<=b,
于是
a*a
<=
a*b,
也就是
a*a
<=
x
所以
a
<=
根号x.
如果在
for(a=2;
a*a<=x;
a++)
之内都找不到可以整除x的a
(也就是满足
x%a==0
的a)
x就必定是素数了.
如果在
for(a=2;
a<=x;
a++)
之内找当然也可以,
只是浪费时间而已.
Ⅵ c语言实验编求素数的函数
#include <stdio.h>
int is_prime(int x)
{
int i;
for(i=2;i*i<=x;i++)
if(x%i==0)
return 0;
return 1;
}
int main()
{
int n,flag=0,i;
scanf("%d",&n);
for(i=2;i*i<=n;i++)
{
if(is_prime(i) && is_prime(n-i))
{
flag=1;
printf("%d %d\n",i,n-i);
}
}
if(flag==0)
printf("No answer\n");
return 0;
}
Ⅶ c语言求素数
楼上说的不对,其实不是什么if-else语句的问题,本来就是应该for循环内运行if(a%i==0)语句的,return1;语句是在for循环外的,表示没有找到a的约数时才return1;也即表示a为素数。这里没什么问题的,
问题存在于你的while语法:你写的while(x<=100);注意你写的while后面有个分号,其实这就已经构成一个while循环了。循环内容就是“;”表示什么也不做,而循环条件是1<=100为真的,程序运行到这里就进入死循环。。。从而出现你所说的“程序没有错,可是运行之后除了‘1到100之间的所有素数是:’这行字之外啥也没有,”
只要删除while(x<=100);后面的分号就可以了,即
#include<stdio.h>
intprime(int);
main()
{
intx;
printf("1到100之间的所有素数是:\n");
x=1;//这里最好是从2开始的,否则会出现1也是素数的结果。或者
//你在intprime(int);函数中单独判断一下参数为1的特殊情
//形。
while(x<=100)//这里不要分号。但do-while语句后面是有分号的
{
if(prime(x))
printf("%d",x);
x=x+1;
}
}
intprime(inta)
{
inti;
for(i=2;i<=a/2;i++)
if(a%i==0)
return0;
return1;
}
Ⅷ 用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语言 求素数 代码
while(b<a,c!=0);
改为:
while(b<a&&c!=0);
就能保证编译通过,并且结果输出
但是你的代码有逻辑错误,所以输出结果不对
给你一个正确的吧:
#include <stdio.h>
int isPrime(int num)
{
int i,tag=1;
if(num==1)
return 0;
for(i=2;tag&&i<=num/2;i++)
{if(num%i==0) tag=0;break;}
return tag;
}
void main()
{
int i,t=0;
for(i=0;i<101;i++)
{
if(isPrime(i))
{t++;
printf("%2d ",i);}
if(t==5)
{printf("\n");t=0;}
}
}
Ⅹ C语言求素数
#include<stdio.h>
#include<math.h>
voidmain()
{
intx=100,d=999,a,i,temp;
for(x;x<=d;x++)
{
temp=0;
a=sqrt(x);
for(i=2;i<=a;i++)
{
if(x%i==0)
{
temp=1;
break;
}
}
if(temp==0)
printf("%d",x);
}
}