编写一个可以计算整数参数是否为质数的函数,(若整数参数等于0或质数,返回true,否则返回false)

编写一个可以计算整数参数是否为质数的函数,(若整数参数等于0或质数,返回true,否则返回false),第1张

#include<stdioh>

#include<mathh>

define true 1

define false 0

int issushu(int n)

{ int i;

if(n==0) return true;

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

if(n%i==0) turn false;

return true;

}

void main()

{ int j;

for(j=0;j<=100;j++)

if(issushu(j)) printf("%d",j);

}

=IF(AND(A1>4,A1=INT(A1)),IF(OR(INT(A1/ROW(INDIRECT("2:"&INT(SQRT(A1)))))ROW(INDIRECT("2:"&INT(SQRT(A1))))=A1),"合数","质数"),IF(OR(A1={2,3}),"质数","合数"))

数组公式:ctrl+shift+enter确定公式

#include<iostream>

using namespace std;

bool IsPrimeNum(int n); //判断自然数n 是否是质数

const int max = 5 ; //表示数组的元素个数的最大值

int main()

{

int a[max]; // 定义一个有max个元素的数组

int i;

cout<<"请输入"<<max<<"个自然数:"<<endl;

for(i=0;i<max;i++)

{

cin>>a[i]; //输入max个数据

}

cout<<"输入的数据中为质数的有:"<<endl;

for(i=0;i<max;i++)

{

if(IsPrimeNum(a[i])) //如果是质数

{

cout<<a[i]<<endl;

}

}

return 0;

}

bool IsPrimeNum(int n) //判断自然数n 是否是质数

{

int i;

bool flag = true; //质数标志,ture为质数

if(n < 2) //0 和 1 既不是质数也不是合数

{

flag = false;

}

else

{

for(i = 2; i < n; i++) // 此处求质数方法可以改进

{

if(n%i == 0)

{

flag = false; //检测到不是质数则退出for循环

break;

}

}

}

return flag; //返回是否是质数的标志

}

测试结果为:

请输入5个自然数:

2 3 4 5 7

输入的数据中为质数的有:

2

3

5

7

Press any key to continue

#include<stdioh>

int IsPrime(int n)

{

int i;

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

if(n%i==0) return 0;

else continue;

return 1;

}

int Sum(int n)

{

int i,sum=2;

if(n<2)return 0;

else if(n==2)return 2;

else

{

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

{

sum+=IsPrime(i)i:0;

}

return sum;

}

}

main()

{

int n;

printf("输入一个最大数:\n");

scanf("%d",&n);

printf("比%d小的所有质数之和SUM=%d\n",n,Sum(n));

getchar();

}

#include<stdioh>

int sushu(int z);/函数声明最好放在外面,放到文件前端/

void main()

{

    int b,a;

    printf("enter a date:\n");

    scanf("%d",&b);

    a=sushu(b);

    if(a==0||b==0) 

        printf("no\n");

    else 

        printf("yes\n");

}

int sushu(int z)

{

    int i , j;/i和返回值要分开,i要做循环标尺的/

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

    {

        if(z%i==0) 

        {

            j=0;

            break;/一旦发现不是素数,跳出for循环/

        }

        else 

            j=1;/如果用i,就是个死循环,如果是素数,每次你把i=1后for循环一直继续/

    }

    return j;

}

int

isprime(int

m)

{

int

i,flag=0;

int

squareRoot=sqrt(m);

if(m<=1)

{

flag=0;

}

for(i=2;i<=squareRoot&&flag;i++)

{

if(m%i==0)

{

flag=0;

}

}

return

flag;

}

这个地方的flag的值从头到尾都是0,就没变过,是不是要把int

flag=0改成int

flag=1

Private Sub Form_Click()

    total = 0 '用于计数有多少个质数

    For i = 2 To 100 '质数从2开始

        For j = 2 To Sqr(i)

            If i Mod j = 0 Then Exit For

        Next j

        If j > Sqr(i) Then

            total = total + 1

            Print i;

            If total Mod 10 = 0 Then Print '打印10个换行

        End If

    Next i

    Print "共有" & total & "个质数"

End Sub

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12171337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存