㈠ 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,然后单击左上角的文件,然后单击新建。