# IsPrimeNumber() - Is a number a prime number

## Recommended Posts

```#region Required project assemblies

using System;

#endregion

{
internal class Program
{
private static bool IsPrimeNumber(int number, out int divisibleBy)
{
divisibleBy = -1; // Set the out parameter as -1, for those numbers which are prime values.
if (number <= 1)
{
return false; // Return false if the value is less than or equal to one.
}

for (int i = 2; i <= Math.Sqrt(number); i++)
{
if (number % i == 0)
{
divisibleBy = i; // Set the out param as the divisible by value.
return false;
}
}
return true; // This means it's a prime number.
}

private static void Main()
{
int userChoice;
do
{
Console.Write("Please enter an integer number to see if it's a prime number: ");
Console.WriteLine(); // New line.
} while (userChoice <= 0);

int numberDivisible;
if (IsPrimeNumber(userChoice, out numberDivisible))
{
Console.WriteLine("Your number is a prime value.");
}
else
{
if (numberDivisible == -1)
{
Console.WriteLine("Your number is NOT regarded as a prime value.");
}
else
{
Console.WriteLine("Your number is NOT a prime value as it's divisible by {0}.", numberDivisible);
}
}
Console.WriteLine(); // New line.

Console.WriteLine("Press any key to continue . . .");
}
}
}```

Edited by Jon
Changed language
##### Share on other sites
• 2 weeks later...

Once you've tested 2, you don't need to test for divisibility by any other even numbers. That means for most numbers you effectively halve the modulus operations needed, so should halve the runtime.

Finding primes is always a very interesting problem. I've spent a fair bit of time on it over the years. Most recently I wrote this piece of gibberish which makes a huge prime sieve, for all the numbers from 0 to 0xFFFFFFFF, and counts the number of primes. The bitmap for the sieve is 256MB, and I meant to try and find out how programs work that unload ranges of data to/from disk efficiently so I could work on a bigger range but never got round to it.

## Create an account or sign in to comment

You need to be a member in order to leave a comment

## Create an account

Sign up for a new account in our community. It's easy!

Register a new account

• ### Similar Content

• By Skeletor
Hi All,
So I was searching through the internet and found a plethora of information to learn C#.
However, some are way below par and does not explain very well.

So, anyone can suggest a proper website or eBook or video course explaining C#?

I've learnt AutoIt (still I'm learning it) by making small programs, reading the forums, going through the F1 guide (huge help, seriously this helps alot) and reading the Wiki.
Any direction would be appreciated, just not off the edge of a cliff..

• Hi AutoIt programmers, excuse me for bothering you with multiple topics.

In AutoIt we can use Number() function to convert Hex string to number but it's output is different of C# output & and i wanna make it's output like AutoIt code.

For e.g I use this in AutoIt:
Local \$dBinary = Binary("Hello") ; Create binary data from a string. Local \$dExtract = Number(BinaryMid(\$dBinary, 1, 5)) ConsoleWrite(\$dExtract & @CRLF) And i use this for C#:
using System; using System.Text; //NameSpace Is Use of Project Name namespace TEST { class Program { public static void Main(string[] args) { //declaring a variable and assigning hex value string dd = ToHex("Hello", Encoding.ASCII); decimal d = Int64.Parse(dd, System.Globalization.NumberStyles.HexNumber); Console.WriteLine("Result: " + d); //hit ENTER to exit Console.ReadLine(); } public static string ToHex(string sInput, Encoding oEncoding, bool b0x_Prefix = false) { byte[] a_binaryOutput = oEncoding.GetBytes(sInput); string sOutput = BitConverter.ToString(a_binaryOutput).Replace("-", ""); if (b0x_Prefix == false) { return sOutput; } else { return "0x" + sOutput; } } } }
I say once again that excuse me for creating new topic, in fact i'm making a library for GAuthOTP from a topic in AutoIt.

• I didn't like the search time of Simple Native Image Search, and being on windows 10 64bit, I couldn't get ImageSearchDll.dll to work properly.
So I started researching image search routines and found this excellent post and set of replies find-a-bitmap-within-another-bitmap.

I really liked the pattern that the Simple Native Image Search used, the clipboard usage and the method of searching. Although I think it could be improved by using some short circuit techniques to return sooner, like consecutive matched > 65% return | matched total > 85% return) , and I wanted the function to manage the click on the found image as well.
So I just did a bit more research and a few trips to MSDN and stackoverflow, these two snippets allow me to replicate KyleJustKnows code, and click.  Another feature is that it also saves the image it captures to disk, so that if the image is not found you can check what was captured, and alternatively cut out a new search image to use.
private void PrintScreen() { keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0); keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0); } public Bitmap CaptureScreenPrtSc() { PrintScreen(); if (Clipboard.ContainsImage()) { using (Image img = Clipboard.GetImage()) { img.Save("ClipBoard.PNG", ImageFormat.Png); return new Bitmap(img); } } return default; } [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool GetCursorPos(out MousePoint lpMousePoint); [DllImport("user32.dll")] private static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo); private MousePoint GetCursorPosition() { var gotPoint = GetCursorPos(out MousePoint currentMousePoint); if (!gotPoint) { currentMousePoint = new MousePoint(0, 0); } return currentMousePoint; } private void MouseEvent(MouseEvents value) { MousePoint position = GetCursorPosition(); mouse_event ((int)value, position.X, position.Y, 0, 0) ; }
So after managing to compile the dll with COM support, with much reading of this forum and many posts from paulpmeier, ptrex, LarsJ, and others about loading .net, I managed to get this all working.

Here is the BotIt Core:
; BotIt Core Global \$sPath = "BotIt.dll" Global \$RegAsmPath = "C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" Func BotIt_StartUp() RegisterBotIt() OnAutoItExitRegister("UnregisterBotIt") EndFunc ;==>BotIt_StartUp Func RegisterBotIt() RunWait(\$RegAsmPath & " /register /codebase /tlb " & \$sPath, @ScriptDir, @SW_HIDE) EndFunc ;==>RegisterBotIt Func UnregisterBotIt() FileDelete("Step.txt") RunWait(\$RegAsmPath & " /unregister " & \$sPath, @ScriptDir, @SW_HIDE) EndFunc ;==>UnregisterBotIt Func ActivateAndSearch(\$sTitle, \$sImgPath, \$bClick = True) WinActivate(\$sTitle) Sleep(1000) \$oBotIt = ObjCreate("BotIt.DetectImageAndClick") ConsoleWrite(\$sImgPath & @CRLF & \$bClick & @CRLF) \$bRet = \$oBotIt.FindAndClick(\$sImgPath, \$bClick) Return \$bRet EndFunc ;==>ActivateAndSearch
Usage:
Do Sleep(500) Until ActivateAndSearch("Window Title", "PathToFile")

I hope you enjoy!
Regards,
ScrapeYourself

BotIt.cs

• Hi all,
I have a problem to handle the controls of an application.
Using AutoIT Windows Tool I can get only the Window (see Summary of the picture).
Any tips to get the controls without knowing the name?
(PS Using TestStack.White everything works, however I want the HIDE application feature of AutoIT).

Many thanks

• By IgImAx
Hi

UPDATED Notes: ===============================================================================
UPDATED: My main and second questions answered. Here the answers:
To add/access WinMenuSelectItem you need to [Thanks to Fernando_Marinho]: Add AutoItX.Dotnet in Manage NuGet Packages Right Click in your Project -> Add -> Reference... -> COM ( Type Libraries )than, check the option AutoItX3 1.0 Type Library  using AutoItX3Lib; AutoItX3 au3 = new AutoItX3(); au3.WinMenuSelectItem("", ...) My full source code in C# exists in 11 posts in below. How to access those overloaded methods in AutoitX3 that are not accessible via above method!? Or how to fix AutoitX3 DLL Registration need in target computers without Autoit pre-installed on them!? Please check my post at 14 posts below!
=============================================================================== Original Post:

I was writing a small app in Autoit to close µTorrent app. It was working. Then I try to import AutoItX into C#, but unfortunately this method
WinMenuSelectItem Couldn't find by IntelliSense and If I typed completely it still give me this message:
Please check the image. I Google it and I found this QA at stackoverflow: Autoit error within C# application I saw they use this line:
au = new AutoItX3Lib.AutoItX3Class(); I figure it how to add 'AutoItX3Lib' to project (by adding 'AutoItX3.dll' to reference) but again! When I use this line:
var au = new AutoItX3Class(); I got this error message: Interop type 'AutoItX3Class' cannot be embedded. Use the applicable interface instead.
My system info:
Visual Studio 2017 Enterprise - v15.5.4
X64 Windows 10 Enterprise 1607
IgImAx

×

• Wiki

• Back

• #### Beta

• Git
• FAQ
×
• Create New...