当前位置:首页 » 编程语言 » c语言素数与完数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言素数与完数

发布时间: 2022-07-23 10:48:15

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);
}
}

㈡ 用C语言编写“判断一个数是否为完数”!

1、首先打开C语言的编辑软件,这里是使用VS2017版,在c语言的文件中写入头文件和主函数备用:

㈢ C语言 完美的素数 求解

#include<stdio.h>
intisprime(intn)
{
inti;
for(i=2;i<n;i++)
if(n%i==0)
break;
if(i==n)
return1;
else
return0;
}
intmain(void)
{
intn,t;
ints=0;
scanf("%d",&n);
t=n;
while(t!=0)
{
s=s+t%10;
t=t/10;
}
if(isprime(s)&&isprime(n))
printf("%d是完美素数 ",n);
else
printf("%d不是完美素数 ",n);


return0;
}

㈣ 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语言中如何求素数

思路:所谓素数是指只能被1和自身整除的数叫作素数,判断素数就可以从2到该数减一依次判断能否整除该数,如果能则不是素数,否则就是素数。

参考代码:

#include<stdio.h>
intisp(intn)//判断是否是素数,是返回1,否则返回0
{
inti;
for(i=2;i<n;i++)
if(n%i==0)return0;
return1;
}
intmain()
{
inta;
scanf("%d",&a);
if(isp(a))
printf("%d是素数 ",a);
else
printf("%d不是素数 ",a);
return0;
}
/*
输出:
89
89是素数
*/

㈥ 求:c语言 质数、水仙花数和完数的图文教程。

哦,大一新生,我是高中生,学编程先把语言玩转吧;
你再多学几个月,你会发现你现在问的问题是多么瓜。
不要去网上找程序,我不相信以你一个受过通才教育的大一学生,比不上我原来初中的水平,耐心多算算多想想嘛,前期比较重要的就是手工去模拟程序的运算过程。这个是很重要的;
素数定义:除了1和他本事没有其他的数可以整除它;
我写C++的,你现在涉及的语言局限没有多大差距:
主要函数:

int flag(){
int x;//x请赋予其一个初值,意思就是,现在X是你需要判断他是否是素数。
//根据素数的定义;
if(x == 2)return true;//特殊情况2
if(x == 3)return true;//特殊情况3
for(int i=4;i<=x-1;i++)
if(x%i==0)return true;
return false;
}

当然枚举的范围可以用数学思维降低,x-1 ---> x/2 ,还可以再降为 sqrt(x);x的开根号;

素数的方法很有多,建议你可以在网络在搜索一下,素数筛法等比较优秀的算法。如果你是研究算法的
你可以看看Millar-Rabbin;

int calc_exp(int a,int b,int c)// a的b次方MODc
{
int ans=1,t=a;
while(b)
{
if(b&1)
ans=(ans*t)%c;

t=(t*t)%c;

b>>=1;
}
return ans;
}

int millar-rabbin(int x)
{
for(int i=1;i<=14;i++)
{
int a=rand(x-2)+2;
if(calc_exp(a,x-1,x)!=1)
return false;
return true;
}
}

那些啥水仙花数,这样那样的,多想想FOR循环嘛,初中生都会。

㈦ 如有 int a[10],如果有负数将所有的负数变为正数,然后输出奇数、偶数、素数和 完数的个数

#include <stdio.h>

#include<math.h>

int fun(int x)//素数的判断函数

{

if(x<2)

return 0;

for(int i=2;i<x;i++)

if(x%i==0)

return 0;

return 1;

}

int st(int x)//完数判断函数

{

int sum=0;//完数=除自身以外的所有因子的和;

for(int i=1;i<x;i++)

if(x%i==0)

sum+=i;

if(sum==x)

return 1;

return 0;

}

int main()

{

int a[11],sum=0,su=0,s=0,k=0;

for(int i=1;i<=10;i++)

{

scanf("%d",&a[i]);

a[i]=abs(a[i]);//绝对值函数,C语言的系统函数

}

for(int i=1;i<=10;i++)

{

if(a[i]%2!=0)

sum++;

if(a[i]%2==0)

su++;

if(fun(a[i]))//素数判读函数引用

s++;

if(st(a[i]))//完数判断函数引用

k++;

}

printf("奇数:%d个 偶数:%d个 素数:%d个 完数:%d个 ",sum,su,s,k);

return 0;

}

㈧ 在c语言中如何表示素数

1、先打开visualc++6.0,然后单击左上角的文件,然后单击新建。