當前位置:首頁 » 操作系統 » c演算法代碼

c演算法代碼

發布時間: 2025-02-03 22:42:20

1. c語言求素數的演算法

根據素數的性質,代碼設計如下:

設計一:判斷n是否能被1~n-1整除,不能整除為素數

#include<stdio.h>

int main()

{

int i, n;

scanf("%d", &n);

for (i = 2; i < n ; i++)

{

if (n%i == 0)

break;

}

if (i < n) printf("This is not a prime.");

else printf("This is a prime.");

return 0;

}

設計二:判斷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;

}

(1)c演算法代碼擴展閱讀:

1.素數的定義是只能被1和他本身整除,1不是素數.因此要判斷一個數是否為素數.就要判斷它能不能被比他小的所有素數整除,這是一個演算法.(寫到演算法時,我只能寫出用它除以比他小的所有數,造成運算速度低下)

2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法2較快的素數判斷演算法

2. 用c語言編寫50的階乘的演算法

#include<stdio.h>
#define N 50 /*可以是任意一個數的階乘,當然要計算機能夠存的下*/

int main()
{
int a[100], l=0, i, j;
for(i=0; i<100; i++)
a[i]=0;
a[0]=1;

for(i=2; i<=N; i++)
{
for(j=0; j<=l; j++)
a[j] *= i;
l+=3;
for(j=0; j<l; j++)
if(a[j]>9)
{
a[j+1]+=a[j]/10;
a[j] %=10;
}
while(a[l]==0) l--;
}

for(i=l; i>=0; i--)
printf("%d", a[i]);
printf("\n");
}

看了 樓下兩個 用int 存儲 50!
感覺有點不可思議, 至少應該用double啊,用double雖然不能保證精度,但至少可以很接近結果。

3樓的 一句話:「老師說過,可以自已定義一個類型來表示更大的數。。。」

自己是可以定義,你可以定義任意類型。只不過需要你自己來實現。 50!這種問題 就相當於 大數 的操作。
網上可以下載到大樹類, 支持 大數的+ - * / 開平方, 開根號,(幾乎所有math里的函數)...。

3. 求一個C語言演算法代碼 輸出N列*號

你好,代碼如下,已通過編譯運行:
#include<stdio.h>
int main(void)
{
int a,b;
printf("請輸入a和b:\n");
scanf("%d%d",&a,&b);
int i = 0;
for(i = 1 ;i <= a; i++)
{
printf("*");
if(i%b == 0) printf("\n");
}
return 0;
}

4. 圖解C語言冒泡排序演算法,含代碼分析

冒泡排序演算法的原理是基於比較相鄰元素,實現數據的有序排列。每一輪循環中,都會將序列中相鄰的兩個元素進行比較,如果前者大於後者,則交換它們的位置。通過不斷循環比較和交換,重復執行這一過程直到無需再做任何交換為止。在執行過程中,較大的元素會被逐漸"冒泡"至序列的末端。
代碼實現方面,我們以C語言為例,以下是一個簡單的冒泡排序代碼示例:
```c
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
```
運行結果是排序後的數組,例如原始數據為: 12 43 23 13 65 17 98 45 67 88,經過冒泡排序後,結果為: 12 13 17 23 43 45 65 67 88 98。
圖解冒泡排序過程,以第一次循環為例,序列從左至右依次比較相鄰元素,大於則交換。如第1次循環排序後結果: 12 23 13 43 17 65 45 67 88 98,可見13與12交換,43與23交換,以此類推,每次循環都能確定一個最大值並將其放置於正確位置。
使用冒泡排序前的原始數據是: 12 43 23 13 65 17 98 45 67 88。在這里只分析下一次循環的過程,如第1次循環排序後結果: 12 23 13 43 17 65 45 67 88 98。以此類推,依次通過第二次循環、第三次循環...第len-1次循環得到最終的數據。

5. c 語言常用的加密演算法——AES加密演算法

在C語言中,加密演算法是保護數據安全的關鍵工具,其中常用的演算法包括AES、RSA、MD5、SHA-1以及Base64編碼。以下內容將具體介紹這些演算法在C語言中的實現方法。

AES加密演算法是一種廣泛應用的對稱加密演算法,適用於數據加密。在C語言中,可以藉助openssl庫實現AES加密功能。以下為一個簡單的AES加密示例代碼,展示了如何使用openssl庫進行加密操作。

代碼如下:

c
#include
#include
#include aes.h>

#define AES_BLOCK_SIZE 16

void encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key, unsigned char *iv, unsigned char *ciphertext) {
AES_KEY aes_key;
AES_set_encrypt_key(key, 128, &aes_key);
int num_blocks = plaintext_len / AES_BLOCK_SIZE;
unsigned char iv_[AES_BLOCK_SIZE];
memcpy(iv_, iv, AES_BLOCK_SIZE);

for (int i = 0; i < num_blocks; i++) {
AES_cbc_encrypt(plaintext + (i * AES_BLOCK_SIZE), ciphertext + (i * AES_BLOCK_SIZE), AES_BLOCK_SIZE, &aes_key, iv_, AES_ENCRYPT);
memcpy(iv_, ciphertext + (i * AES_BLOCK_SIZE), AES_BLOCK_SIZE);
}
}

在示例中,加密密鑰和初始向量均設置為16位元組長度的字元串。待加密的數據為字元串形式,其長度通過`plaintext_len`傳遞給`encrypt`函數。加密結果存儲在`ciphertext`數組中,其長度為原始數據的長度加上一個塊大小(16位元組)。加密後,輸出加密數據的16進制格式。

RSA加密演算法是一種非對稱加密演算法,具有加密與解密密鑰不同的特點,是目前應用最為成熟的一種。在C語言中,同樣可以使用openssl庫實現RSA加密功能。

MD5演算法作為廣泛使用的加密散列函數,可以產生一個128位的散列值,適用於數字簽名和驗證、消息摘要等場景。在C語言中,通過 openssl庫可以實現MD5加密。

SHA-1演算法全稱為Secure Hash Algorithm 1,是一種密碼哈希函數,用於數字簽名、驗證和消息摘要等目的。在C語言中,同樣藉助openssl庫實現SHA-1加密。

Base64編碼雖然嚴格意義上不屬於加密演算法,但其能一定程度隱藏信息,常用於簡單的「加密」操作。在C語言中,通過openssl庫可以實現Base64編碼和解碼。

在C語言中,通過使用openssl這樣的第三方庫,可以高效地實現上述加密演算法。這些庫已經實現了各種演算法的優化實現,方便開發者直接調用。

熱點內容
手機wps密碼怎麼取消密碼 發布:2025-02-04 00:51:44 瀏覽:593
演算法邏輯表 發布:2025-02-04 00:51:44 瀏覽:238
零售股票如何配置主線 發布:2025-02-04 00:51:07 瀏覽:945
預演算法施行時間是 發布:2025-02-04 00:50:30 瀏覽:339
世界ol上傳照片 發布:2025-02-04 00:34:13 瀏覽:60
有初始化的數組編譯提示重復定義 發布:2025-02-04 00:33:21 瀏覽:583
家裡電腦wifi密碼怎麼改 發布:2025-02-04 00:27:35 瀏覽:409
手機網頁緩存視頻 發布:2025-02-03 23:38:48 瀏覽:835
agnes演算法 發布:2025-02-03 23:38:05 瀏覽:38
私密上傳在哪 發布:2025-02-03 23:33:04 瀏覽:1005