1、判断素数的个数
在一个数组 A 中存放 100 个数据,用子函数判断该数组中哪些是素数,并统计该素数的个数,在主函数中输出该素数的个数。
#include <stdio.h>
#include <stdlib.h>
int isPrime(int n)
{
int i;
if (n < 2)
return 0;
for(i = 2; i*i <= n; ++i){
if(n % i == 0)
return 0; //不是素数
}
return 1; //是素数
}
int CountPrime(int a[], int size)
{
int i = 0, count = 0;
for (i = 0; i < size; i++)
{
if (isPrime(a[i]))
{
printf("%d ", a[i]);
count++;
if (count % 10 == 0)
printf("\n");
}
}
printf("\n");
return count;
}
int main()
{
int a[100], i, count = 0;
for (i = 0; i < 100; i++)
a[i] = rand() % 1000;
printf("素数的个数:%d\n", CountPrime(a, 100));
return 0;
}
//运行结果
383 421 59 211 67 929 167 11 229 373
421 919 281 313 857 367 43 739
素数的个数:18
2、用递归求第 n 项的值
已知 1,2,4,2,3,6,12,6,3,.... 求第 n 项值
#include <stdio.h>
int fun(int n, int *x, int *y)
{
int sum = 0, i;
int size = 0;
int dd = 1;
for (i = 1; i <= (*x); i++)
{
sum += (2 * i - 1);
}
if (sum == n)
{
*y = 2 * (*x) - 1;
return (*x);
}
else if (sum > n)
{
(*y) = n - (sum - (2 * (*x) - 1));
size = 2 * (*x) - 1;
dd = (*x);
for (i = 2; i <= (*y); i++){
if(i <= (*x))
dd *= 2;
else
dd /= 2;
}
return dd;
}
else
{
(*x)++;
return fun(n, x, y);
}
}
int main()
{
int n;
int row = 1, col = 0;
int val;
row = 1;
col = 0;
printf("请输入n:");
scanf("%d", &n);
val = fun(n, &row, &col);
printf("第%d项是:%d\n", n, val);
return 0;
}
//运行结果
请输入n:3
第3项是:4
请输入n:8
第3项是:6
3、移除链表元素
给你一个链表的头节点
head
和一个整数val
,请你删除链表中所有满足Node.val == val
的节点,并返回新的头节点。示例1:
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]示例 2:
输入:head = [], val = 1
输出:[]示例 3:
输入:head = [7,7,7,7], val = 7
输出:[]提示:
列表中的节点数目在范围
[0, 10^4]
内
1 <= Node.val <= 50
0 <= val <= 50
#include<iostream>
using namespace std;
struct ListNode{
int val;
ListNode *next;
ListNode(int x): val(x), next(NULL){}
};
class Solution{
public:
ListNode *removeElements(ListNode *L, int val){
ListNode *dumynode = new ListNode(0);
dumynode->next = L;
ListNode *fast = dumynode->next; //利用快慢指针
ListNode *slow = dumynode;
while(fast != NULL){
if(fast->val == val)
slow->next = slow->next->next;
else
slow = slow->next;
fast = fast->next;
}
ListNode *ret = dumynode->next;
delete dumynode;
return ret;
}
};