當前位置:首頁 » 編程語言 » 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,然後單擊左上角的文件,然後單擊新建。